xinrong2019 / xinrong2019.github.io

My Blog
https://xinrong2019.github.io
1 stars 1 forks source link

20180523之网络基础之TCP的三次握手 #26

Open xinrong2019 opened 5 years ago

xinrong2019 commented 5 years ago

IP协议回顾

IP协议是无连接的通信协议,不会占用正在通信的通信线路,IP降低了对网络线路的需求,每条线,可以同时满足许多计算机通信需要,通过IP,消息会被分割为较小的独立的包,通过Internet在计算机间传送,IP负责将包路由到目的地,除此之外不做多余的事情,不会确认数据包是否按顺序发送,或者包是否被破坏,所以IP数据包不可靠,需要上层传输层协议控制。

传输控制协议TCP简介:

TCP报文头的数据结构

TCP和UDP报文头格式

TCP Flags

TCP建立连接时的三次握手

image

xinrong2019 commented 5 years ago

TCP是全双工的,A给B发送数据的时候,B也可以同时给A发

xinrong2019 commented 5 years ago

第一次握手:建立连接时,客户端发送SYN包(seq=x)到服务器,并进入SYN_SEND状态,等待服务器确认;

第二次握手:服务端接收到SYN包,必须确认客户的SYN(ack=x+1),同时自己也发送一个SYN包(seq=y),即SYN+ACK包,此时服务器进入SYN_RECV状态;

第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认宝ACK(ack=y+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手。

xinrong2019 commented 5 years ago

为什么需要三次握手才能建立连接?

为了初始化Sequence Number的初始值,TCP利用这个序号拼接数据,保证数据顺序

xinrong2019 commented 5 years ago

首次握手隐患--SYN超时

问题起因分析:

SYN Flood攻击

xinrong2019 commented 5 years ago

建立连接后,Client出现故障怎么办?

保活机制