tcp的三次握手 tcp建立连接的过程
先放一张图了解tcp 和http的关系
http属于应用层,而tcp属于传输层 http是基于tcp的
有几个字段需要重点介绍下:
(1)序号:Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。(顺序码)
(2)确认序号:Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1。(确认码)
(3)标志位:共6个,即URG、ACK、PSH、RST、SYN、FIN等,具体含义如下:
(A)URG:紧急指针(urgent pointer)有效。
(B)ACK:确认序号有效。
(C)PSH:接收方应该尽快将这个报文交给应用层。
(D)RST:重置连接。
(E)SYN:发起一个新连接。
(F)FIN:释放一个连接。
需要注意的是:
(A)不要将确认序号Ack与标志位中的ACK搞混了。
(B)确认方Ack=发起方Req+1,两端配对。
第一次握手:主机A发送 位码syn=1 和seq number=xxxx 的一个随机数 到主机B 代表要请求建立连接
第二次握手:主机B 接受到请求 向主机A发送数据包 ack=number+1(接收到的seq+1 代表确认收到主机A所发送的请求)并且自己也发送一个位码syn=1 和seq number=xxxx
第三次握手:主机A 接收到 确认序号 验证确认序号是否有效 ,并向主机B 发送 确认序号 ack=number+1 发送完后 建立连接
TCP的特点 灵活性 安全性 可操作性 可靠性 适用性
为什么说TPC协议安全可靠 不会出点丢失数据的情况?
正是因为三次握手的特性