计算机网络

TCP与UDP的对比
(1)连接方面,TCP需要三次握手而UDP并不需要
(2)TCP有完善的拥塞控制机制,UDP没有
(3)UDP可以有无连接状态
(4)UDP分组首部开销更小

可靠性协议以及机制

检验和 用于检测分组中是否出现比特错误
定时器 用于超时/重传分组
序号 检测出一个分组的冗余副本
确认 通知发送方分组已经接收
否定确定 接收方通知发送方分组未能接收
窗口 发送方也被允许限制仅发送那些序号落在一个指定范围的分组

TCP/UDP
多路复用/多路分解

TCP的流量控制:
流量控制是一个速度匹配的服务,即发送方的发送速率与接收方的读取速率相匹配。

三次握手:
(1)每次ACK针对###对方###发过来的Seq进行加一并返回给对方。
(2)为啥是三次是三次握手:为了防止已经失效的连接请求重新打到了服务端。
(3)为啥需要初始化序列号:

四次握手:
(1)客户发送关闭请求
(2)服务端针对这个关闭连接的请求进行ACK
(3)服务端向客户端发送关闭信息
(4)客户端针针对服务端发送来的关闭信息进行ACK

四次握手的状态:
FIN_WAIT_1:
客户端发送关闭连接请求之后即进入FIN_WAIT_1状态,但客户端此时仍然可以接收消息。
FIN_WAIT_2:
客户端接收到服务端的ACK信息随即进入FIN_WAIT_2状态,并等待服务端发送FIN消息。
CLOSE_WAIT:
这种状态的含义其实是表示在等待关闭。怎么理解呢?当对方close一个SOCKET后发送FIN报文给自己,你系统毫无疑问地会回应一个ACK报文给对方,此时则进入到CLOSE_WAIT状态。接下来呢,实际上你真正需要考虑的事情是察看你是否还有数据发送给对方,如果没有的话,那么你也就可以 close这个SOCKET,发送FIN报文给对方,也即关闭连接。所以你在CLOSE_WAIT状态下,需要完成的事情是等待你去关闭连接。(被动方)
LAST_ACK:
它是被动关闭一方在发送FIN报文后,最后等待对方的ACK报文。当收到ACK报文后,也即可以进入到CLOSED可用状态了。(被动方)
TIME_WAIT:
表示收到了对方的FIN报文,并发送出了ACK报文,就等2MSL后即可回到CLOSED可用状态了。如果FINWAIT1状态下,收到了对方同时带FIN标志和ACK标志的报文时,可以直接进入到TIME_WAIT状态,而无须经过FIN_WAIT_2状态。(主动方)
TIME_WAIT存在的意义是防止最后一次ACK对方没有接收到需要进行重传。
CLOSED:
表示连接中断。

在四次挥手过程中,TCP的FIN和ACK消息可以是异步的,因为在接收到关闭连###接请求之后可以先把手头的数据处理完再进行ACK确认。

拥塞控制原理
通过超时或者3次冗余确认可被认为是网络拥塞的一个迹象。TCP会相应的减小其窗口长度。
2种控制方法:
(1)端到端拥塞控制
(2)网络辅助的拥塞控制:通过网络层构建(即路由器)

TCP拥塞控制:
首先看一下TCP连接的每一端的构成:接收缓存、一个发送缓存、几个变量。运行在发送方的TCP拥塞控制机制还需要跟踪一个额外的变量:拥塞窗口(用于控制发送速率)。

控制算法:
该算法主要包括三个部分:慢启动、拥塞避免、快速恢复;
慢启动和拥塞避免是TCP的强制的部分。
慢启动:
在慢启动阶段,TCP的发送速率是以指数进行增长。如果出现丢包则重新启动慢启动;如果速率进入慢启动阈值则进入拥塞避免方式;如果监测到三个冗余ACK,此时TCP执行快速重传并进入快速恢复 状态。
拥塞避免:
更加保守的增加CWND的值:一种通用的方式是每当收到一个ACK确认则增加CWND的值。当出现丢包或者三次冗余ACK的时候则CWND的值直接变成原来的一半,接下来进入快速恢复状态。
快速恢复:
在TCP处于快速恢复状态时候:每收到一个冗余确认则CWND的值加1。

你可能感兴趣的:(计算机网络)