1用户数据报协议UDP协议
定义和特点
UDP协议旨在ip数据报的服务之上增加了很少的功能,即复用分用和差错检测功能,主要特点是:
- UDP是无连接的,减少开销和发送数据之前的时延
- UDP使用最大努力交付,即不保证可靠交付
- UDP是面向报文的,适合一次性传输少量的数据网络应用。
- UDP无拥塞控制,适合很多的实时应用
内部结构
2TCP协议
tcp协议的特点
1tcp是面向连接(虚连接)的传输层协议 2每一条TCP连接只能由两个端点,每一个tcp连接只能是点对点的 3tcp提供可靠的交付服务,无差错,不丢失,不重复,按序到达(可靠有序,不重不丢) 4tcp提供全双工通信
tcp协议的四个功能: 1连接管理 2可靠传输 3流量控制 4拥塞控制
1.TCP连接管理
分析问题: 可以看出,在第一次向服务器请求的阶段后,服务器接收信息之后会为该请求分配缓存和变量,并且会向浏览器发送确认报文并且会等待响应,如果客户端不返回确认的确认时,服务器就会一直等待,并且还因为已经开辟了内存而浪费了资源。就会容易产生SYN洪泛攻击问题。 解决此办法是设置SYNcookie
断开连接(四次挥手)
为什么要设置这个等待时间2mls时间呢,因为:当客户端收到服务器端的关闭通知之后,会设置2mls时间,如果服务器端在2mls时间之内收不到客户端发来的关闭确认通知,服务器端会再次发送关闭通知,然后客户端会再次发送确认关闭,并且重置2mls时间,当发送服务器端接收到关闭通知后,才进入close状态。
2.TCP的可靠传输
可靠传输是指:在接收方收到的字节流与发送发发送的字节流完全一样的
- 校验:在接收方和发送方增加伪首部,来进行二进制反码求和,判断有没有发生错误。
- 序号:序列号
- 确认:确认接收到信息,确认号:希望收到的下一个序列号
- 重传:如果发送方没有收到接受方的信息的话,就可以确认自己发送的数据应该是丢失了,需要重传。从而可以保证是可靠的,但是如何因为网络时间的复杂性,如何根据时间来确定接收端没有接收到信息呢?
那就需要采用了自适应算法,动态的改变重传时间RTTS(加权平均往返时间)。
3.TCP的流量控制
让发送方发送慢一点,好让接收方来得及接收。 tcp利用滑动窗口机制实现流量控制。
机制:在通信过程当中,接收方根据自己接收缓存的大小,动态的调整发送方的发送窗口大小,即接收窗口rwnd(接收方设置确认报文段的窗口字段来将rwnd通知给发送方),发送方的发送窗口取接收窗口rwnd和拥塞窗口cwnd的最小值。 为了解决发送双方:当B发送0窗口之后,A就不能发送新的数据报,但当B再次发送数据报之后,要求发送端A发送新的数据时把发送窗口搞丢了,此时A就不会发送数据的问题,造成B等待A发送,而A等待B发送发送窗口的类似于死锁的局面,引入了零窗口的探测报文段:
TCP为每一个连接设有一个持续计时器,只要TCP连接的发送方A收到接收方B的零窗口通知,就启动持续计时器。若持续计时器设置的时间到期,发送方就会发送一个零窗口探测报文段,接收方收到探测报文段之后会重新发送现在的窗口值,如果仍然为0,发送方就重新设置持续计时器。
4.TCP的拥塞控制
1慢开始和拥塞避免组合使用来解决拥塞问题
(报文段指的是最大报文段长度:512字节)
慢开始阶段:逐渐的按照指数增加传输报文的数量,当达到慢开始门限之后,就开始执行阻塞避免阶段 阻塞避免阶段:采用逐渐增加报文段的数量,一个一个的增加传输数量 当达到拥塞窗口的值时,会将新的阈值(慢开始门限 ssthresh)设置为当前拥塞窗口的一半,然后将传输报文段设为1,再次按照慢开始阶段的指数增长和阻塞避免阶段的逐渐增长。
2快重传和快恢复算法来解决拥塞问题
当连续收到三个重复的确认后,就会执行快重传算法,此时会讲阈值设置为一半,但是不在向第一种方法一样来从新开始,而是直接从阈值(慢开始门限)开始执行加法增大算法(拥塞避免),一点点的增加传输数据包数量.
|