前言
三次握手(Three-way Handshake)其实就是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。进行三次握手的主要作用就是为了确认双方的接收能力和发送能力是否正常、指定自己的初始化序列号为后面的可靠性传送做准备。实质上其实就是连接服务器指定端口,建立TCP连接,并同步连接双方的序列号和确认号,交换TCP窗口大小信息。
- 刚开始客户端处于 Closed 的状态,服务端处于 Listen 状态。
提示:以下是本篇文章正文内容,下面案例可供参考
一、TCP是什么?
TCPTransmission Control Protocol 就是双方 通信交流 的规范标准(协议)。是一种面向连接的、可靠的、基于字节流的传输协议
二、了解TCP报文头部标志信息
1.TCP报文头
头部(header):在每一个数据段前面加上必要的控制信息(如目的地址、源地址等)组成的首部(header)
端口号
- source port:源端口号就是本地端口号
- distination port:目的端口号就是远程端口号
- 端口可以理解为特定软件或程序的接口 - 源端口就是本机程序用来发送数据的端口,目的端口就是对方主机用哪个端口接收
(示例):
举个例子:
数据包通过网络设备走的时候,第一个检查数据包的目的地址在什么地方。 我们把防火墙的目的端口关闭的话,也就是自己的 数据段 无法到达目的地,因为数据段在发送出去的过程中,防火墙 检测到这个目的端口 不允许出去。 也就是说,把目的端口封了,自己就无法上网了。 如果封 80 目的端口,也就不能访问别人的网站了
至于源端口,应该这么理解。 你的数据段发到别人哪儿时,别人要是回应数据包的话 你的源端口就是别人发送数据的目的端口。 因此,我们要是把源端口封了,别人就无法与你取得联系。 如果封80源端口别人就无法访问你的网站了。 封目的端口自己就出不去,封源端口别人就进不来
TCP Flag
- TCP中有6个标志比特,多个可同时别设置为1.主要用于操控TCP状态机,如下
URP,ACK,PSH,RST,SYN,FLN
SYN(同步序列号)
发送的第一个数据包,用来建立连接
- 当连接请求的时候,SYN=1,ACK=0连接被响应时候SYN=1,ACK=1;扫描者发送SYN数据包,对方响应了一个数据包SYN=1,回来就表明有这个端口号。
ACK(确认)
TCP 三次握手
初始状态:客户端处于closed状态,服务器处于listen状态。 第一次握手:客户端发送请求报文SYN=j(1)初始序列号,此时客户端处于SYN_Send(发送等待状态)
总结
.
|