TCP/IP--TCP三次握手和四次挥手理解

本篇结构:

  • 前言
  • TCP报文首部格式
  • 三次握手
  • 四次挥手
  • wireshark抓包三次握手
  • wireshark抓包四次挥手

一、前言

比较郁闷,明明年纪不大,记性却出奇显出老态,不久前学习过的知识,再回头看发现基本已经忘却。

可能也是学得不扎实,不深入的原因吧。

抛开这些无关的念头,少年,再来深入理解一下吧,要知道这个世上大多数的事,都是一个重复的过程。

二、TCP报文首部格式

先来复习下TCP报文首部首部的格式。

在这里插入图片描述

  1. 源端口和目的端口(Source Port和Destination Port):分别占用2个字节,用于区别主机中的不同进程,而IP地址是用来区分不同的主机的,源端口号和目的端口号配合上IP首部中的源IP地址和目的IP地址就能唯一的确定一个TCP连接。
  2. 序号seq(Sequence Number):占4个字节,用来标识从TCP发端向TCP收端发送的数据字节流(tcp传输的每一个字节都按顺序编号),它表示在这个报文段中的的第一个数据字节在数据流中的序号。主要用来解决网络报乱序的问题。
  3. 确认号ack(Acknowledgment Number):占4个字节,确认序列号包含发送确认的一端所期望收到的下一个序号,因此,确认序号应当是上次已成功收到数据字节序号加1。不过,只有当标志位中的ACK标志为1时该确认序列号的字段才有效。主要用来解决不丢包的问题(确认序号减去上次收到的序号等于本段收到的报文的长度)。
  4. 数据偏移(Offset):占4个bit,指出tcp报文段的数据起始处距离tcp报文段的起始有多远,这个字段实际指出Ttcp报文段的首部长度。需要这个值是因为任选字段的长度是可变的,它用来表示首部中32bit(4字节)字的数目,因此最多能表示15个32bit的的字,即4*15=60个字节的首部长度),因此TCP最多有60字节的首部。然而,没有任选字段,正常的长度是20字节。
  5. 保留:占6bit。
    TCP Flags:TCP首部中有6个标志比特,它们中的多个可同时被设置为1,主要是用于操控TCP的状态机的,依次为URG,ACK,PSH,RST,SYN,FIN。每个标志位的意思如下
  6. 紧急URG:当URG = 1时,表示TCP包的紧急指针域有效,告诉系统这个报文段中有紧急数据,应当尽快传输。
  7. 确认ACK:TCP应答号将会包含在TCP数据包中,有两个取值:0和1,为1的时候表示应答域有效,反之为0。
  8. 推送PSH:这个标志位表示Push操作,接收方tcp收到PSH = 1的报文段,就尽快交付给接收接收应用进程而不是再等到这个缓冲区都填满之后再向上交付。
  9. 复位RST:表示连接复位请求,当RST = 1,标明tcp有严重的错误,必须释放连接,重新建立运输连接。RST = 1还可以用来拒绝一个非法的报文段或者拒绝打开一个连接。
  10. 同步SYN:表示同步序号,用来建立连接,SYN标志位和ACK标志位搭配使用,当连接请求的时候,SYN=1,ACK=0;连接被响应的时候,SYN=1,ACK=1;这个标志的数据包经常被用来进行端口扫描。扫描者发送一个只有SYN的数据包,如果对方主机响应了一个数据包回来 ,就表明这台主机存在这个端口;但是由于这种扫描方式只是进行TCP三次握手的第一次握手,因此这种扫描的成功表示被扫描的机器不很安全,一台安全的主机将会强制要求一个连接严格的进行TCP的三次握手。
  11. 终止FIN: 表示发送端已经达到数据末尾,将释放一个连接,FIN = 1, 表示报文段的发送方的数据已经发送完成,请求释放连接。
  12. 窗口:占2个字节,存放的是数据是字节为
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值