网络协议之五(TCP)

1.        TCP可靠性保障

1.1.       TCP会分割为TCP段(UDP不会,超长后直接截取)

1.2.       发送TCP段后,启动定时器等待ACK。以便超时重发

1.3.       客户端收到TCP段后,不会立即发送ACK,而是会等待一个时间(以便和将要发送的数据一起发送。Nagle算法)

1.4.       检验和,如果不对,则直接丢失,且不发送ACK,以便对方重新发送。

1.5.       对多个TCP段进行重组,(失序重组)

1.6.       接收端丢失重复数据

1.7.       TCP流量控制。窗口大小。最长报文大小(MSS)。滑动窗口。

2.        连接的建立

2.1.       正常连接(三次握手)

2.1.1.      SYN

2.1.2.      SYN/ACK

2.1.3.      ACK

2.2.       建立连接超时

2.3.       半打开

一方已经关闭,但另一方还不知道。

KEEPALIVE可以检测,但是系统级,且时间较长。

2.4.       同时打开。

只会建立一条连接

2.5.        

3.        连接的关闭

3.1.       正常关闭(四次)

收到FIN表示该方向不再有数据,会向程序提交EOF标识。Socket为双工的,因此可以这个方向不再有数据,但另一个方向还可以有数据。

3.1.1.      FIN(主动关闭方)

3.1.2.      ACK

3.1.3.      FIN(被动关闭方)

3.1.4.      ACK

3.2.       半关闭状态

四次关闭过程中第二个包之后到第四包之间。

3.3.       同时关闭

会产生CLOSING状态,两端同时发送FIN,同时进入FIN_WAIT_1,且还没有收到ACK

 

4.        Socket状态

4.1.       建立连接过程

LISTEN,SYN_SND,SYN_RCVD,ESTABLISHED

4.2.       关闭连接

FIN_WAIT_1,FIN_WAIT_2,TIME_WAIT(进入2MSL状态,为了发送最后ACK的确认,且防止确认ACK丢失;IP层为TLL,基于跳数)。(主动方)

CLOSE_WAIT,LAST_ACK,CLOSED。(被动方)

5.        特殊设置

5.1.       SO_REUSEADDR

5.2.       SO_LINGER

5.3.       Backlog,连接及SYN队列,已完成、未完成。

6.        其他

6.1.       PUSH标识

6.2.       慢启动(新分组进入网络的速率和收到ACK的速率应该相同),拥塞窗口。

6.3.       通道容量

6.4.       拥塞

6.5.       紧急方式(带外数据),URG标识。作用,使得控制信息更快被处理。

7.        TCP定时器

7.1.       超时重传定时器,由ACK使用

7.2.       坚持定时器,窗口大小改变相关,窗口探测。

7.3.       保活定时器(Keepalive),半关闭相关

7.4.       2MSL定时器,主动关闭方处于TIME_WAIT状况相关。

8.        超时重传

数据和ACK都可能丢失。不同的实现区别在于超时和重传的策略。

8.1.       发送时发送端设置一个定时器,定时器到了时还没收到ACK则重传。

8.2.       RTT

9.        坚持定时器

9.1.       总会发送探测数据,在收到对方窗口为0时才会启动。因此与keepalive不同。不能用于检测半打开。

10.    保活定时器

TCP协议并不提供保活,保活是应用层的职责。

10.1.    防止半打开。Keepalive是系统级的。

11.    TCP新特性

11.1.    路径MTU

11.2.    长肥管道

11.3.    窗口扩大

11.4.    时间戳

11.5.    TTCP

12.    应用层协议

12.1.    SNMP

简单网络管理协议,使用UDP

12.2.    Telnet、Rlogin

12.3.    FTP

12.4.    SMTP

12.5.    NFS、SUN RPC

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值