TCP/IP三次握手四次挥手
TCP/IP协议是一个超级复杂而又庞大是东西,以后更需要深入学习,这个文主要记录下三次握手和四次挥手的抓包和简介。
1.TCP/IP
TCP/IP 是不同的通信协议的大集合。
是指能够在多个不同网络间实现信息传输的协议族。TCP/IP协议不仅仅指的是TCP 和IP两个协议,而是指一个由FTP、SMTP、TCP、UDP、IP等协议构成的协议族, 只是因为在TCP/IP协议中TCP协议和IP协议最具代表性,所以被称为TCP/IP协议。
TCP/IP协议参考ISO,OSI模型共有七层,从下到上分别是物理层、数据链路层、网络层、运输层、会话层、表示层和应用层。但是这显然是有些复杂的,所以在TCP/IP协议中,它们被简化为了应用层,传输层,Internet层,网络访问层,四个层次。
2.TCP报头结构,
1.源端口,目标端口,各占16位,可表示2^16个端口
2.序号 报文的序号
3.确认号 确认报文,表示N-1之前的报文已经收到,下次发送报文N
4.数据偏移(4位,表示首部的长度,所以首部最大长度是60字节),保留字段(6位),URG,ACK,PSH,RST,SYN,FIN(6个标记位),窗口
5.校验,紧急指针。
6,可变选项,填充
TCP报头固定长度占20个字节。
6个标志位
URG: 紧急指针位,当URG=1时,表示紧急指针有效,属于优先级高的数据。快速反应。
ACK: 确认ack,当ACK=1时,确认字段号才有效,建立连接的主机ACK必须为1
PSH: 当PSH=1时,接受端应用程序应该立即读取数据,而不是进入缓冲区。
RST: 当RST=1时,改连接发生严重错误,释放错误,需重新建立连接,RST置1还用来拒绝一个非法的报文段或拒绝打开一个连接。
SYN: 建立连接同步,当SYN=1而ACK=0时,表明这是一个连接请求报文段。对方若同意建立连接,则应在相应的报文段中使用SYN=1和ACK=1。因此,SYN置为1就表示这是一个连接请求或连接接受的报文,只有在前两次握手中SYN才置为1,带SYN标志的TCP报文 段称为同步报文段 。
FIN: 用来结束和释放一个连接,当FIN=1时,通知对面主机表示要结束连接,结束报文段
窗口:用于控流,表示对方发送的数据量,从本报文段 的确认号开始允许对方发送的数据量,达到此值,需要ACK确认后才能再继 续传送后面数据,由Window size value * Window size scaling factor (此值在三次握手阶段TCP选项Window scale协商得到)得出此值 。
校验: 检验范围包括首部和数据两部分,提供额外的可靠性。
紧急指针:标记紧急数据在数据字段中的位置 ,指出本报文段中的紧急数据的字节数(紧急数据结束后就是普通数据)。因此,紧急指针指出了紧急数据的末尾在报文段中的位置。当所有紧急数据都处理完时,TCP就告诉应用程序恢复到正常操作。值得注意的是,即使窗口为零时也可发送紧急数据。
可变选项:最大40个字节,TCP报文首部最大60字节,固定字节20个字节
3.三次握手流程
4 三次握手抓包
软件:Wireshark
通过本地的虚拟机连接
三次握手的包,第一个包:
第二个包
第三个包
5. 四次挥手过程
6. 四次挥手抓包
如上,当客户端发送FIN时接收到了服务端的FIN ,ACK ,客户端发送一个ACK,直接进入time_wait状态,等待2msl,关闭连接
三次握手四次挥手有限状态机