标签:缓存 设置 面向连接 报文 protoc 三次 性能 head 匹配
这里面的二进制反码求和校验算法参考了:https://blog.csdn.net/dingmin1860/article/details/48268927
传输层是分界层次,以上是面向应用,以下是面向数据传输
根据用户的需求不同~
可靠,面向连接,TCP
不可靠,非面向连接,UDP。快,传输代价小。
16位,0-65535
0-1023 保留的
1024-5000 临时的
通用端口号
FTP | 21/TCP |
DNS | 53/UDP |
HTTP | 80/TCP |
SMTP | 25/TCP |
网络层已经提供传输服务,不可靠,会丢失分组。
需要端主机系统自己实现可靠传输。
反馈重发
用户数据报协议 user datagram protocol
源端口(16位)、目的端口(16)、校验和(16)、消息长度(16)、数据
端口号:16位,允许65535个不同的端口号
校验和:校验范围 UDP数据报头+报文主体+伪报头
消息长度:单位 字节,8字节的UDP头+数据部分,最大长度65535
伪首部(12字节)
4(字节) | 4 | 1 | 1 | 2 |
---|---|---|---|---|
源IP地址 | 目的IP地址 | 0 | 17 | UDP长度 |
校验和的计算范围:伪首部+UDP首部+数据
12(字节) | 2 | 2 | 2 | 2 | |
---|---|---|---|---|---|
伪首部 | 源端口 | 目的端口 | 消息长度 | 校验和 | 数据 |
计算方法如IP校验和:二进制反码运算
UDP不仅检查了端口号,还检查了IP地址
传输控制协议 transmission control protocol
在不稳定的IP网络上建立连接
客户端:主动打开网络连接,发送一个SNY分节,初始化序列号为x
服务器端:被动打开端口,发送SNY y,和ACK x+1
客户端:发送ACK y+1
三种策略
收到一个ACK才能发送下一个包
计时器
发送方没有在规定时间内收到ACK,则认为超时并且重新发送该数据包。
存在问题:收到重复报文。
接收方可以通过报文序号来去除重复的分组。
连续ARQ协议
滑动窗口不仅可以实现连续ARQ协议,还可以进行流量控制(发送方和接收方的速度相匹配)
按照字节数进行确认
只要TCP连接的一方A收到对方的零窗口通知,就会启动该持续计时器。
若计时器到期,A发送零窗口探测报文。对方收到后,给出现在的窗口值。
发送方发送速率不要太快,既要让接收方来得及接收(防止数据丢失),也不要使网络发生拥塞。
滑动窗口机制在TCP上可以实现流量控制(双方按照一致的速率发送数据)
某段时间内,需求超过资源所能提供的可用部分,网络的性能就会变坏。--->拥塞
增加资源,减少需求
最小长度20字节
(列了大纲,会补充更新的~!)
参考:https://blog.csdn.net/dingmin1860/article/details/48268927
首先,IP、ICMP、UDP和TCP报文头都有检验和字段,大小都是16bit,算法基本上也是一样的。
在发送数据时,为了计算数据包的检验和。应该按如下步骤:
1、把校验和字段设置为0;
2、把需要校验的数据看成以16位为单位的数字组成,依次进行二进制反码求和;
3、把得到的结果存入校验和字段中
在接收数据时,计算数据包的检验和相对简单,按如下步骤:
1、把首部看成以16位为单位的数字组成,依次进行二进制反码求和,包括校验和字段;
2、检查计算出的校验和的结果是否为0;
3、如果等于0,说明被整除,校验和正确。否则,校验和就是错误的,协议栈要抛弃这个数据包。
标签:缓存 设置 面向连接 报文 protoc 三次 性能 head 匹配
原文地址:https://www.cnblogs.com/christy99cc/p/11921098.html