计算机网络-传输层

网络层不具有重传,需要传输层来控制。

  • Tcp:需要将传输的数据进行分段传输,并且能够建立会话,具备流量控制,是一种可靠的传输协议
  • UDP:一个数据包就能完成数据通信,不分段,不需要建立会话,不需要流量控制,是一种不可靠控制。DNS服务器,广播,多播

命令

查看会话:netstat -n
查看建立会话的进程:netstat -nb
查看侦听的端口:netstat -an, netstat -a

应用层协议

  • Http: TCP + 80
  • Https: Tcp + 443
  • FTP : TCP + 21
  • SMTP : TCP + 25
  • telnet: Tcp+23
  • DNS: UDP + 53
  • 共享文件夹:TCP + 445
服务器与应用层之间的关系

服务使用Tcp或者UDP端口侦听客户端请求,客户端使用IP地址定位服务器,使用目标端口定位服务。可以在服务器网卡上设置只开发必要的端口,实服务器的网络安全

传输层与网络层之间的关系

传输层 程序到程序,或者说是服务到服务,这个由“端口号”确定
网络层 地址到地址,这个由IP地址确定

UDP:用户数据报协议

UDP是不可靠的协议:它把应用程序传给IP层的数据发送出去,但是并不能保证他们能送达目的性。支持一对一,一对多,多对一的交互通信。

UDP的首部是8个字节,开销小。端口号表示发送进程和接受进程。UDP首部字段是UDP首部和UDP数据长度和,因此这个字段的最小值是8,即UDP首部长度值。这个字段其实是多余的,因为等于IP数据报长度减去IP首部长度。

UDP校验和

UDP检验和是一个端到端的检验和。它由发送端计算,然后由接收端验证。其目的是为了发现UDP首部和数据在发送端到接收端之间发生的任何改动。
UDP校验和是可选的,TCP的校验和是必须的。计算方法和ip首部的校验和计算类似,用的是16进制的二进制反码和,但是不同之处在于:

  • UDP数据报长度可以是奇数字节数,解决办法是需要填充
  • UDP数据报包含一个12字节长的伪首部
    这个伪首部,包含了一些IP的一些字段,目的是让UDP两次检查数据是否已经正确到达目的地,即IP没有接受地址不是本机的数据报。

如果校验和发生差错,那么UDP数据报就会被丢弃。

IP分片

当IP数据报的长度大于MTU时就要被分片。

使用UDP很容易导致IP分片。以太网数据帧的最大字节数是1500,其中1480留给IP数据报,如果IP数据报首部20字节,UDP首部8个字节,不产生分片IP数据报的数据部分最大字节是1472字节。多于这个字节数就会导致分片。


分片后,传输层首部(就是UDP首部)只出现在第一片。

UDP应用:多播和广播

多播和广播仅仅应用于UDP。

广播

一个主机要向同一个网络的所有其他主机发送帧,这就是广播。那么网卡是如何确定广播的? 网卡仅接收那些目的地址为网卡物理地址或广播地址的帧。对于以太网,当地址中最高字节的最低位设置为1时表示该地址是一个多播地址,用十六进制可表示为01 : 00 : 00 : 00 : 00 : 0 0(以太网广播地址 ff : ff : ff : ff : ff : ff 可看作是以太网多播地址的特例)。

Tcp协议

  • Tcp协议如何实现可靠传输
  • Tcp协议如何实现流量控制
  • Tcp协议如何避免网络拥塞

Tcp是面向连接的传输协议,每次都要三次握手建立连接,每一条Tcp连接都是只能点对点,
Tcp提供可靠交付的服务
Tcp提供全双工通信
面向字节流

可靠传输

  • 停止等待协议
  • 确认丢失

报文

序号,就是数据在整个数据中的偏移地址+1,就是第几个字节。接收端确认回应,下一次可以发送字节偏移量。

数据便偏移:首部最长是60个字节,选项最多40个字节,首部以后的数据

SYN 发起会话请求
ACK 同意会话请求
URG 不需要等待,直接发送,插队
PSH 接收端是优先接受,插队
RST TCP会话出现严重问题,意外中断,重新建立会话
FIN 正常中止

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/394488.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

人工智能|人工智能教育的发展现状及趋势

智能的热潮正席卷全球。国家在人工智能领域展开战略布局,人工智能人才成为国家急需的高层次技术人才。据领英发布的《全球 Al 领域人才报告》显示,国内人工智能人才缺口达到 500 多万。 毫无疑问,人工智能将不可阻挡地影响所有产业。给自己一…

【数据结构】线性表(线性表的定义和基本操作)

计算机考研408-数据结构笔记本之——第二章 线性表 2.1 线性表的定义和基本操作 1 线性表的定义(数据结构三要素——逻辑结构) 线性表是具有相同数据类型的n(n≥0)个数据元素的有限序列. 其中n为表长,当n0 时线性表是一个空表。 若用L命名线性表&…

【C++】:智能指针 -- RAII思想shared_ptr剖析

目录 一,内存泄漏二,智能指针的使用及原理2.1 RAII思想2.2 auto_ptr2.3 unique_ptr 三,shared_ptr(重点)3.1 shared_ptr的原理及使用3.2 shared_ptr的模拟实现1. 基本框架2. 引用计数的设计3. 拷贝构造4. 析构函数5. 赋值拷贝 3.3 shared_ptr…

详解Xilinx FPGA高速串行收发器GTX/GTP(4)--TX/RX接口的数据位宽和时钟设计

目录 1、时钟设计 2、TX接口 3、接口位宽与时钟的关系 4、时钟来源方案 5、TX端内部的时钟分频设计 6、RX接口 文章总目录点这里:《FPGA接口与协议》专栏的说明与导航 1、时钟设计 GT收发器内部比较复杂,所使用的时钟就不止一个,比较主要的时钟有两个,架构…

Zookeeper的监听机制及原理解析

系列文章目录 手把手教你安装Zookeeper 及可视化插件ZooInspector、ZKUI Zookeeper入门篇,了解ZK存储特点 使用Zookeeper的监听及原理解析 系列文章目录前言一、监听机制的基本概念二、Zookeeper监听原理1. 事件类型2. 监听模式与监听器类型(1&#xff…

健康管理系统

目录 第1章 系统概述 第2章 可行性研究 2.1 项目背景及意义 2.2 可行性研究 第3章 需求分析 3.1 功能性需求 3.2 非功能性需求 3.2.1 性能需求 第4章 总体设计 4.1 技术架构 4.2功能模块设计 第5章 详细设计 5.1 主页 5.2 写剧本杀 5.3 剧本杀分类管理 5.4 个人…

数组下标越界异常(ArrayIndexOutOfBoundsException)以及解决方案

在Java学习的初期,我们往往可能会遇到一些程序的错误提示,告诉我们,程序出现了某些不正常的情况,在这种情况发生时,我们一般称之为出现了异常。 我们目前有两类常见的错误: 一个是编译时异常 &#xff0c…

数据分析与应用:微信-情人节红包流向探索分析

目录 0 需求描述 1 红包发送方用户的基本信息缺失率有多高?(即有多少红包发送方用户无法在用户基本信息表中匹配? 2 哪一组红包金额的拒收率最高? 3、最受二线城市欢迎的红包金额为?(即发出次数最多) 4 北上广深 4 大城市中,哪座城市的男性用户发出的 520 红包比例…

三大口诀不一样的代码,小小的制表符和换行符玩的溜呀

# 小案例,打印输出加法口诀 for i in range(1,10):for j in range(1,10):if j>i:breakprint(f"{j}{i}{ji}".strip(),end\t)print() print(\n) for i in range(1,10):for j in range(1,10):if j>i:breakprint(f"{j}x{i}{j*i}",end\t)print…

计算机毕业设计选题推荐-房屋租赁系统-Java/Python项目实战

✨作者主页:IT研究室✨ 个人简介:曾从事计算机专业培训教学,擅长Java、Python、微信小程序、Golang、安卓Android等项目实战。接项目定制开发、代码讲解、答辩教学、文档编写、降重等。 ☑文末获取源码☑ 精彩专栏推荐⬇⬇⬇ Java项目 Python…

app逆向抓包技巧:SSL Pinning检测绕过

本篇博客旨在记录学习过程,不可用于商用等其它途径 场景 在charles抓包下,某斑马app在注册时发现点击登录毫无反应,看抓包结果提示SSL handshake with client failed,确定是触发了SSL/TLS Pinning(证书锁定&#xff…

【SpringBoot 属性加载机制】

SpringBoot 属性加载 一个 SpringBoot 应用的配置属性可以有多种不同的来源, 比如可以来自操作系统的环境变量, 比如可以来自 application.yaml 文件; 每一种不同的属性来源, 都会被 SpringBoot 封装成一个PropertySource对象, 保存在 Environment 对象的 PropertySources 类型…

数据采集工具之Canal

本文主要介绍canal采集mysql数据的tcp、datahub(kafka)模式如何实现 1、下载canal https://aliyun-datahub.oss-cn-hangzhou.aliyuncs.com/tools/canal.deployer-1.1.5-SNAPSHOT.tar.gz canal的原理类似于mysql的主从复制,canal模拟的是从节点拉取主节点的binlog数…

LeetCode 热题 HOT 100 (015/100)【宇宙最简单版】

【栈】No. 0155 最小栈【中等】👉力扣对应题目指路 希望对你有帮助呀!!💜💜 如有更好理解的思路,欢迎大家留言补充 ~ 一起加油叭 💦 欢迎关注、订阅专栏 【力扣详解】谢谢你的支持! …

深入了解核函数:连接机器学习与统计学的桥梁

引言 在机器学习中,支持向量机(SVM)是一种强大的监督学习模型,特别适合处理分类问题。然而,SVM最初被设计用于线性可分的数据集,现实中的数据往往不是线性可分的。为了解决这一问题,我们引入了…

共享之道——享元模式(Python实现)

共享之道——享元模式(Python实现) 大家好,今天我们继续来讲结构型设计模式,上一期我们介绍了外观模式,这一期我们来讲享元模式(Flyweight Pattern)。 享元模式(Flyweight Pattern…

Bitwise 首席投资官:忽略短期的市场波动,关注加密货币的发展前景

原文标题:《The Crypto Market Sell-Off: What Happened and Where We Go From Here》撰文:Matt Hougan,Bitwise 首席投资官编译:Chris,Techub News 加密货币市场在周末经历了大幅下跌。从上周五下午 4 点到周一早上 7…

优质电器/机械岗位推荐:经验不限大厂直招,薪资最高30K!

本周优质电器/机械岗位推荐,涵盖C、自动化、开发、安卓开发、项目管理等岗位,经验不限,更有大厂直招岗位,薪资最高30K!! 抓紧投递,早投早入职! 👇点击职位名称查看详情…

PHP + Laravel + RabbitMQ + Redis 实现消息队列 (三) 消费队列在RabbitMQ和redis中的发布和订阅

发布订阅(Pub/Sub) 对于消息队列传统的模式来说,一个消费者消费一条消息,这条消息被消费之后就不会再次被其它的消费者消费。但是在发布订阅模式中,一条消息是可以被多个消费者消费的,这些消费者其实相当于…

前端构建工具|vite快速入门

认识vite vite组成部分 Vite是一种新型前端构建工具,能够显著提升前端开发体验。它主要由两部分组成: 一个开发服务器,它基于 原生 ES 模块 提供了 丰富的内建功能,如速度快到惊人的 模块热更新(HMR)。一…