笔记--TCP的连接

1..在TCP/IP 协议簇中,传输层协议主要有两个:TCP、UDP
2.TCP:传输控制协议,传输速度慢,安全性高
UDP:用户数据报协议,传输速度快,安全性低。
3.TCP---传输控制协议,它是面向连接的、可靠的的协议,提供全双工服务。
4.TCP将若干个字节构成一个分组,称为报文段。
TCP的报文段封装在IP数据包中
笔记--TCP的连接
3.TCP报文段的首部格式
笔记--TCP的连接
上图所示为TCP报文段的首部,其中的参数分别是:
(1)源端口号:发送者的端口号
(2)目标端口号:接收者的端口号
(3)序号:发送数据时会给每个报文段的第一个字节一个随机数X作为编号, 保证数据的正确性。同时,编号相互独立。
(4)确认号:接收者收到报文后,用来告诉发送者我已经收到。X+1
(5)URG----FIN属于控制位,TCP的连接、断开、传输都受其控制
①URG:与后面的额16位紧急指针配合使用,当URG=1时,生效。
②ACK:确认位。当ACK=1时,生效;当ACK=0时,无效。
③PSH:当PSH=1时,需要接收者尽快把数据段送到应用层。
④RST:当RST=1时。表示重新请求建立TCP连接
⑤SYN:需要建立连接时,SYN=1。
⑥FIN :需要断开连接时,FIN=1。


上述内容是对TCP报文段的初步介绍;
接下来是TCP连接的三次握手,断开连接时的四次握手。
假设:A为客户端,B为服务端。
TCP三次握手

(1)A向B发送的报文段:请求连接SYN=1,随机序号Seq=X;
A从CLOSED进入SYN_SEND状态,等待B的确认。
B从CLOSED转换到LISTEN状态

(2)①B收到A的报文段后发送报文段:确认位ACK=1(Seq=X+1);
随机序号=Y,请求建立连接SYN=1;
B从LISTEN状态转换到SYN_RECV状态,

(3)A收到B的报文段后发送报文段:确认位ACK=1(Seq=Y+1);
A和B进入Established状态。开始传输。
就像两个人初次见面:A说你好能交个朋友吗;B听见后回了声你好,并伸出手准备握手;A看见B伸手,也伸出手和B握在一起。
A向B发出请求连接报文,报文是包含一个随机序号(X)的SYN。
B收到后会发送一次报文,实现两次操作:
一个是表示完整收到的确认序列号,该序列号为X+1,这个1其实是ACK=1;另一个是请求连接的报文,包含一个随机序号(Y)的SYN。
A向B回复一个确认序列号,该序列号为Y+1,这个1也是ACK=1。

-
TCP四次握手:
(1)A向B发送报文段:请求断开连接FIN=1,ACK=1;
A此时处于FIN_WAIT_1状态。
(2)B向A发送报文段:ACK=1;
B此时处于CLOSE_WAIT状态,等待数据传输的完成;
A此时处于FIN_WAIT_2状态。

(3)B向A发送报文段:请求断开连接FIN=1,ACK=1;
B此时处于LAST_ACK状态。
(4)A向B发送报文段:ACK=1;
A此时处于TIME_WAIT状态,等待30S后处于CLOSED状态;
B此时处于CLOSED状态。

“好比两个人面对面告别:A说我走了;B点头确认,并说我也要走了;A确认点头,随后两人转身离开。”
A向B提出请求断开连接,B发送报文表示收到,但此时的数据可能没有传输完,如果此时直接断开的话就是传输失败。所以只有当B把数据传输完,再向A发出断开请求连接,A确认。这才是一个完整的数据传输过程。

============================
总结一下客户端与服务端的状态的变化:
(1)客户端的变化:
CLOSED-->SYN_SEND-->ESTABLISHED-->FIN_WAIT1-->FIN_WAIT2-->TIME_WAIT-->CLOSED;
(2)服务端的变化:
CLOSED-->LISTEN-->SYN_RECV-->ESTABLISHED-->CLOSED_WAIT-->LAST_ACK-->CLOSED。

转载于:https://blog.51cto.com/13963327/2333672

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值