物理层、数据链路层以及网络层共同解决了将主机通过异构网络互联起来所面临的问题,实现了主机与主机之间的通信。而传输层的任务就会是提供运行在不同主机上的应用进程提供直接的通信服务,即提供进程与进程之间的逻辑通信。传输层是主机才有的层次。
一.UDP协议
UDP只在IP数据报服务之上增加了不少功能,如复用分用功能和差错检测功能。
UDP主要特点:无连接、不可靠、面向报文
1.UDP首部格式
这里源端口号可有可无,如果目的端口号需要给源端口进行回复,那么就需要源端口号,如果不需要回复,则可以不需要源端口号。
2.UDP校验
二.TCP协议特点和TCP报文段格式
1.TCP协议特点
2.TCP报文段格式(重点)
三.TCP连接管理
TCP连接传输的三个阶段:连接建立------>数据传送------>连接释放
TCP连接的建立采用**客户服务器方式,**主动发起建立连接建立的应用进程是客户,被动等待连接建立的应用进程叫服务器。
1.TCP的连接建立(三次握手)
SYN是同步位,SYN=1就表明是一个连接请求或者连接接受的报文。
seq是序号,一般表示当前所发送数据的第一个字节的序号。
ACK是确认位,有ACK就一定有确认号ack,ack=x+1表示下一个等待接受的字号是x+1
疑问:第三个阶段的TCP报文是否多余?即:能不能使用两报文握手进行TCP连接?答:不多余,第三次握手是为了防止已失效的TCP连接请求报文段突然又传送到了TCP服务器进程,导致出错。
在连接建立的2,3阶段中,服务器端和客户端分别为TCP连接分配了缓存和变量,这其实会导致一个SYN洪泛攻击的问题。
2.SYN洪泛攻击
3.TCP连接释放(四次挥手)
半关闭状态就是客户端没有数据需要发送,而服务器端如果还要发送数据,客户端仍要接收,即服务器到客户端这个方向的连接没有关闭。
FIN是终止位,FIN=1表示数据已发完,需要进行连接释放。
设置2MSL原因:如果第四次挥手中客户端向服务器端发送的ACK确认报文段在中途丢失,那么服务器端就会超时重传第三次挥手的连接释放报文段,如果未设置2MSL,而是直接关闭,服务器端就会一直发送,而一直得不到客户端的ACK,造成资源浪费。
例题:
4.TCP保活计时器
TCP保活计时器就是为了解决建立了TCP连接的一方出现故障,另一方如何发现的这个问题,一般会设置一个保活计时器,当保活计时器到时之后,另一方仍然没有发送数据,就会发送探测报文段,连续发送10个仍无响应,就会认为对方所在主机出现故障,关闭连接。
四.TCP可靠传输
对于网络层,会提供尽最大努力交付,而不进行可靠传输,因此可靠传输就由上层传输层来解决,而传输层的两大协议UDP和TCP中,**UDP是无连接和不可靠,**所有可靠传输就交给TCP来解决。
TCP实现可靠传输的机制:①校验 ②序号 ③确认 ④重传
校验和UDP校验方法是一样的,通过发送方和接收方增加一个伪首部,通过二进制反码求和来判断是否出现错误。
TCP的可靠传输与数据链路层十分相似,发送方发送TCP缓存序号字段给接收方,接收方接收后会发送确认报文段,通常采用累积确认或者捎带确认,如果待接收报文段未接收而接收了之后的报文段,依然会返回待接收确认报文段(即首部确认号字段为待接收字段),发送方在重传时间内为收到确认就会重传已发送的报文段,即超时重传。
TCP采用自适应算法来动态改变重传时间RTTs,即通过加权的方式不断更新当前发送报文段的重传时间,
五.TCP流量控制
- 一般来说我们总是希望数据传输的更快一些
- 但如果发送方把数据发送的过快,接收方就可能来不及接收,这就会造成数据的丢失
- 所谓流量控制就是让发送方的发送速率不要太快,要让接收方来得及接收
- 利用滑动窗口机制,可以很方便的在TCP连接上实现对发送方的流量控制
六.TCP拥塞控制
当对资源需求的总和大于可用资源时,就会发生拥塞。
拥塞控制:防止过多数据注入网络中。
流量控制是点对点的问题,而拥塞控制是全局性问题。
拥塞控制的四种算法:慢开始,拥塞避免,快重传,快恢复
1.慢开始 拥塞避免
ssthresh是门限值,不是固定的,当发生网络拥塞时,ssthresh值就会等于当前拥塞窗口大小/2.