两户人家通信,传输层相当于两家的管家,他们不参与信件的运输,他们会汇总家里要寄出的信,交给邮递员。同时会整理收到的信,并根据收件人将信分发给家里每个人。负责的管家(TCP)发现信件有问题,还会写信要求重新发一封回来。
传输层将应用层的报文分割成报文段(链路层最大MTU1500B,IP报头通常20B,TCP报头通常20B,所以MSS(最大报文段)通常为1460B,即应用层传来的数据)
进程之间的端到端通信
UDP有多路复用/分解,差错检验
TCP有多路复用/分解,流量控制,拥塞控制,可靠传输,差错检验
多路复用指的是由不同的进程套接字接收的数据,将它们用同一协议封装,形成报文段,并传输(管家收集要寄出的信,统一一起寄)
多路分解指的是将报文段的数据传给对应的进程套接字(管家收了好多信,将它们分发给不同的家人)
tcp是面向连接的,即需要建立连接(三次握手后),才能相互传数据。
比如网线电路干扰,数据丢失(物理失败)
对方网卡(性能失败)
底层内部已经排序,read读的时候已经排好序了
接收窗口 该字段用于流量控制,即接收方此时tcp的缓存可以接收的字节
发送窗口=min(拥塞窗口,接收窗口)
拥塞窗口是仅由发送方所决定的,它根据网络上阻塞程度(即3个冗余ack和超时)来决定拥塞窗口的大小
而接收窗口是由接收方决定的
区分于拥塞控制,拥塞控制是当检测到拥塞时,遏制发送方的速率
而流量控制是消除发送方使接收方缓存溢出的可能性。
例如UDP没有流量控制,当接收方速率跟不上发送方速度时,会出现丢失分组
所以拥塞控制是全局的,涉及网络上的主机和路由
流量控制是点对点的。
同时发送接受是互不干扰的,因为走的是不同的线
![[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-ARDJb9VT-1668153827838)(C:/Users/hch/AppData/Roaming/Typora/typora-user-images/image-20221111151758196.png)]](https://1000bd.com/contentImg/2024/04/24/c688aefdd01400ea.png)
比如8080 什么的软件端口
序号,确认号是tcp用来可靠传输的
TCP是建立在不可靠的网络层传输的可靠传输
(管家收到错的信件,就要求重发,直到收到正确的信件,再接收到给收信人,这样可以保证收件人信件的正确性,从收件人的角度上,这个是个稳定可靠的连接)
tcp报文是建立在字节流上的
序号是建立在传输的字节流上(从0开始)
因此一个报文段的序号是建立在传输的字节流上
(所以序号字段这么长....4B)
序号 是 报文段的首字节
确认号是 主机A期望从主机B收到的下一字节的序号
可靠传输主要靠序号确认,主要有三种方法:
1. 停止-等待协议
2. 后退N帧协议
3. 选择重传协议
TCP的可靠传输类似后退N帧协议与选择重传协议的结合,
后退N帧协议即只接受有序的报文段,采用“累计确认”的方式
选择重传协议即每一帧都需要确认,可以接收失序的报文段
TCP实践中为接收方保留失序的字节,同时采用“累计确认”的方式(对有序接受到的进行最后一帧确认,而不是每帧都确认)。
冗余ACK:主机A 向主机B 发送1 2 3 4 5 的报文,其中2号报文丢失,主机B接收到1 3 4 5 返回
3个 ack=2的报文(期望收到2),主机A 收到3个冗余ACK则重传2
eg:(注意序号,数据) A向B 发送seq=x 数据长度为y的报文[x,x+1…x+y-1]
则B回给A的报文段的ack=x+y
首部长度(4bit),指的是tcp报头长度,单位是4B(一个字)
注意udp报头中的长度是udp数据报的字节数(单位是字节,且为2B)
表示数据开始的地方离TCP段的起始处有多远。
6bit
URG ACK PSH RST SYN FIN
URG:相当于优先级高
ACK:ACK=1时表示确认号有效
PSH:PSH=1 不等缓存存满就提交给上层应用层
RST:不接受该连接,请换连接
SYN:SYN=1时 为请求连接报文或请求响应报文
FIN:FIN=1时 为连接释放报文段
大白话:怎么样保证自己传的数据正确嘞?直接加起来得一个数,传过去。
那边得到数据也加起来 看还是这个数不
16bit 发送方的UDP对报文段中的所有16比特字的和(不是偶数字节时,用全0字节填充)进行反码计算,计算的时候要加入伪首部(12B)计算,将得到的结果放入校验和中,接收方将所有16比特字与该校验和相加并取反,若全为1,代表正确,否则丢弃。
关于tcp 与udp它们校验码都是验证全部 包括报头+数据 甚至还添加了伪首部,连ip也进行了验证.
而ip报文中校验和只验证了ip报头。关于为什么要重复验证?(两个不一定是绑定的 邮局要检查信件少了没 管家也要看信件错没错误,同时还要检查送去的邮局对不对)