1、 各协议报文格式介绍各协议报文格式介绍 能看懂抓包内容的关键以太网的两个标准以太网的两个标准 lDIX Ethernet V2 是世界上第一个局域网产品(以太网)的规约。lIEEE 的 802.3 标准。lDIX Ethernet V2 标准与 IEEE 的 802.3 标准只有很小的差别,因此可以将 802.3 局域网简称为“以太网”。l严格说来,“以太网”应当是指符合 DIX Ethernet V2 标准的局域网 1.MAC 帧的格式 l常用的以太网MAC帧格式有两种标准:DIX Ethernet V2 标准IEEE 的 802.3 标准l最常用的 MAC 帧是以太网 V2 的格式。MAC
2、 帧物理层MAC 层IP 层目的地址源地址类型数 据FCS6624字节46 1500IP 数据报以太网 V2 的 MAC 帧格式源地址字段 6 字节MAC 帧物理层MAC 层IP 层目的地址源地址类型数 据FCS6624字节46 1500IP 数据报以太网 V2 的 MAC 帧格式类型字段 2 字节类型字段用来标志上一层使用的是什么协议,以便把收到的 MAC 帧的数据上交给上一层的这个协议。MAC 帧物理层MAC 层IP 层目的地址源地址类型数 据FCS6624字节46 1500IP 数据报以太网 V2 的 MAC 帧格式数据字段 46 1500 字节数据字段的正式名称是 MAC 客户数据字段
3、最小长度 64 字节 18 字节的首部和尾部=数据字段的最小长度 MAC 帧物理层MAC 层IP 层目的地址源地址类型数 据FCS6624字节46 1500IP 数据报以太网 V2 的 MAC 帧格式FCS 字段 4 字节当传输媒体的误码率为 1108 时,MAC 子层可使未检测到的差错小于 11014。当数据字段的长度小于 46 字节时,应在数据字段的后面加入整数字节的填充字段,以保证以太网的 MAC 帧长不小于 64 字节。MAC 帧物理层MAC 层IP 层目的地址源地址类型数 据FCS6624字节46 1500IP 数据报以太网 V2 的 MAC 帧格式10101010101010 10
4、101010101010101011前同步码帧开始定界符7 字节1 字节8 字节插入在帧的前面插入的 8 字节中的第一个字段共 7 个字节,是前同步码,用来迅速实现 MAC 帧的比特同步。第二个字段是帧开始定界符,表示后面的信息就是MAC 帧。为了达到比特同步,在传输媒体上实际传送的要比 MAC 帧还多 8 个字节l数据字段的长度与长度字段的值不一致;l帧的长度不是整数个字节;l用收到的帧检验序列 FCS 查出有差错;l数据字段的长度不在 46 1500 字节之间。l有效的 MAC 帧长度为 64 1518 字节之间。l对于检查出的无效 MAC 帧就简单地丢弃。以太网不负责重传丢弃的帧。无效的
5、 MAC 帧 2.IP 地址与硬件地址 TCP 报文IP 数据报MAC 帧应用层数据首部首部尾部首部链路层及以下使用硬件地址硬件地址网络层及以上 使用 IP 地址IP 地址IP 数据报的格式 l一个 IP 数据报由首部和数据两部分组成。l首部的前一部分是固定长度,共 20 字节,是所有 IP 数据报必须具有的。l在首部的固定部分的后面是一些可选字段,其长度是可变的。固定部分可变部分04816192431版 本标志生 存 时 间协 议标 识区 分 服 务总 长 度片 偏 移填 充首 部 检 验 和源 地 址目 的 地 址可 选 字 段 (长 度 可 变)位首部长度数 据 部 分数 据 部 分首
6、部IP 数据报首部发送在前可变部分首部04816192431版 本标志生 存 时 间协 议标 识区 分 服 务总 长 度片 偏 移填 充首 部 检 验 和源 地 址目 的 地 址可 选 字 段 (长 度 可 变)位首部长度数 据 部 分数 据 部 分首 部IP 数据报固定部分发送在前首部04816192431版 本标志生 存 时 间协 议标 识总 长 度片 偏 移填 充首 部 检 验 和源 地 址目 的 地 址可 选 字 段 (长 度 可 变)位首部长度数 据 部 分数 据 部 分首 部IP 数据报固定部分可变部分区 分 服 务发送在前首部04816192431版 本标志生 存 时 间协 议标
7、 识总 长 度片 偏 移填 充首 部 检 验 和源 地 址目 的 地 址可 选 字 段 (长 度 可 变)位首部长度数 据 部 分固定部分可变部分版本占 4 位,指 IP 协议的版本目前的 IP 协议版本号为 4(即 IPv4)区 分 服 务1.IP 数据报首部的固定部分中的各字段 首部04816192431版 本标志生 存 时 间协 议标 识总 长 度片 偏 移填 充首 部 检 验 和源 地 址目 的 地 址可 选 字 段 (长 度 可 变)位首部长度数 据 部 分固定部分可变部分首部长度占 4 位,可表示的最大数值是 15 个单位(一个单位为 4 字节)因此 IP 的首部长度的最大值是 6
8、0 字节。区 分 服 务首部04816192431版 本标志生 存 时 间协 议标 识总 长 度片 偏 移填 充首 部 检 验 和源 地 址目 的 地 址可 选 字 段 (长 度 可 变)位首部长度数 据 部 分固定部分可变部分区分服务占 8 位,用来获得更好的服务在旧标准中叫做服务类型,但实际上一直未被使用过。1998 年这个字段改名为区分服务。只有在使用区分服务(DiffServ)时,这个字段才起作用。在一般的情况下都不使用这个字段 区 分 服 务首部04816192431版 本标志生 存 时 间协 议标 识总 长 度片 偏 移填 充首 部 检 验 和源 地 址目 的 地 址可 选 字 段
9、 (长 度 可 变)位首部长度数 据 部 分固定部分可变部分总长度占 16 位,指首部和数据之和的长度,单位为字节,因此数据报的最大长度为 65535 字节。总长度必须不超过最大传送单元 MTU。区 分 服 务首部04816192431版 本标志生 存 时 间协 议标 识总 长 度片 偏 移填 充首 部 检 验 和源 地 址目 的 地 址可 选 字 段 (长 度 可 变)位首部长度数 据 部 分固定部分可变部分标识(identification)占 16 位,它是一个计数器,用来产生数据报的标识。区 分 服 务首部04816192431版 本标志生 存 时 间协 议标 识区 分 服 务总 长
10、度片 偏 移填 充首 部 检 验 和源 地 址目 的 地 址可 选 字 段 (长 度 可 变)位首部长度数 据 部 分固定部分可变部分标志(flag)占 3 位,目前只有前两位有意义。标志字段的最低位是 MF(More Fragment)。MF 1 表示后面“还有分片”。MF 0 表示最后一个分片。标志字段中间的一位是 DF(Dont Fragment)。只有当 DF 0 时才允许分片。首部04816192431版 本标志生 存 时 间协 议标 识总 长 度片 偏 移填 充首 部 检 验 和源 地 址目 的 地 址可 选 字 段 (长 度 可 变)位首部长度数 据 部 分固定部分可变部分片偏移
11、(12 位)指出:较长的分组在分片后某片在原分组中的相对位置。片偏移以 8 个字节为偏移单位。区 分 服 务偏移=0/8=0偏移=0/8=0偏移=1400/8=175偏移=2800/8=350140028003799279913993799需分片的数据报数据报片 1首部数据部分共 3800 字节首部 1首部 2首部 3字节 0数据报片 2数据报片 314002800字节 0【例4-1】IP 数据报分片首部04816192431版 本标志生 存 时 间协 议标 识总 长 度片 偏 移填 充首 部 检 验 和源 地 址目 的 地 址可 选 字 段 (长 度 可 变)位首部长度数 据 部 分固定部分
12、可变部分生存时间(8 位)记为 TTL(Time To Live)数据报在网络中可通过的路由器数的最大值。区 分 服 务首部04816192431版 本标志生 存 时 间协 议标 识总 长 度片 偏 移填 充首 部 检 验 和源 地 址目 的 地 址可 选 字 段 (长 度 可 变)位首部长度数 据 部 分固定部分可变部分协议(8 位)字段指出此数据报携带的数据使用何种协议以便目的主机的 IP 层将数据部分上交给哪个处理过程区 分 服 务运输层网络层首部TCPUDPICMPIGMPOSPF数 据 部 分IP 数据报协议字段指出应将数据部分交给哪一个进程首部04816192431版 本标志生 存
13、 时 间协 议标 识总 长 度片 偏 移填 充首 部 检 验 和源 地 址目 的 地 址可 选 字 段 (长 度 可 变)位首部长度数 据 部 分固定部分可变部分首部检验和(16 位)字段只检验数据报的首部不检验数据部分。这里不采用 CRC 检验码而采用简单的计算方法。区 分 服 务首部04816192431版 本标志生 存 时 间协 议标 识总 长 度片 偏 移填 充首 部 检 验 和源 地 址目 的 地 址可 选 字 段 (长 度 可 变)位首部长度数 据 部 分固定部分可变部分源地址和目的地址都各占 4 字节区 分 服 务5.1 运输层协议概述5.1.1 进程之间的通信l从通信和信息处理
14、的角度看,运输层向它上面的应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最低层。l当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时,只有位于网络边缘部分的主机的协议栈才有运输层,而网络核心部分中的路由器在转发分组时都只用到下三层的功能。运输层为相互通信的应用进程提供了逻辑通信 54321运输层提供应用进程间的逻辑通信主机 A主机 B应用进程应用进程路由器 1路由器 2AP1LAN2WANAP2AP3AP4IP 层LAN1AP1AP2AP4端口端口54321IP 协议的作用范围运输层协议 TCP 和 UDP 的作用范围AP3应用进程之间的通信l两个主机
15、进行通信实际上就是两个主机中的应用进程互相通信。l应用进程之间的通信又称为端到端的通信。l运输层的一个很重要的功能就是复用和分用。应用层不同进程的报文通过不同的端口向下交到运输层,再往下就共用网络层提供的服务。l“运输层提供应用进程间的逻辑通信”。“逻辑通信”的意思是:运输层之间的通信好像是沿水平方向传送数据。但事实上这两个运输层之间并没有一条水平方向的物理连接。运输层协议和网络层协议的主要区别 应用进程应用进程IP 协议的作用范围(提供主机之间的逻辑通信)TCP 和 UDP 协议的作用范围(提供进程之间的逻辑通信)因 特 网运输层的主要功能 l运输层为应用进程之间提供端到端的逻辑通信(但网络
16、层是为主机之间提供逻辑通信)。l运输层还要对收到的报文进行差错检测。l运输层需要有两种不同的运输协议,即面向连接的 TCP 和无连接的 UDP。两种不同的运输协议l运输层向高层用户屏蔽了下面网络核心的细节(如网络拓扑、所采用的路由选择协议等),它使应用进程看见的就是好像在两个运输层实体之间有一条端到端的逻辑通信信道。l当运输层采用面向连接的 TCP 协议时,尽管下面的网络是不可靠的(只提供尽最大努力服务),但这种逻辑通信信道就相当于一条全双工的可靠信道。l当运输层采用无连接的 UDP 协议时,这种逻辑通信信道是一条不可靠信道。TCP/IP 的运输层有两个不同的协议:(1)用户数据报协议 UDP
17、 (User Datagram Protocol)(2)传输控制协议 TCP (Transmission Control Protocol)5.1.2 运输层的两个主要协议 l两个对等运输实体在通信时传送的数据单位叫作运输协议数据单元 TPDU(Transport Protocol Data Unit)。lTCP 传送的数据单位协议是 TCP 报文段(segment)l UDP 传送的数据单位协议是 UDP 报文或用户数据报。TCP 与 UDP TCP/IP 体系中的运输层协议 TCPUDPIP应用层与各种网络接口运输层TCP 与 UDP lUDP 在传送数据之前不需要先建立连接。对方的运输层
18、在收到 UDP 报文后,不需要给出任何确认。虽然 UDP 不提供可靠交付,但在某些情况下 UDP 是一种最有效的工作方式。lTCP 则提供面向连接的服务。TCP 不提供广播或多播服务。由于 TCP 要提供可靠的、面向连接的运输服务,因此不可避免地增加了许多的开销。这不仅使协议数据单元的首部增大很多,还要占用许多的处理机资源。还要强调两点 l运输层的 UDP 用户数据报与网际层的IP数据报有很大区别。IP 数据报要经过互连网中许多路由器的存储转发,但 UDP 用户数据报是在运输层的端到端抽象的逻辑信道中传送的。lTCP 报文段是在运输层抽象的端到端逻辑信道中传送,这种信道是可靠的全双工信道。但这
19、样的信道却不知道究竟经过了哪些路由器,而这些路由器也根本不知道上面的运输层是否建立了 TCP 连接。5.1.3 运输层的端口 l运行在计算机中的进程是用进程标识符来标志的。l运行在应用层的各种应用进程却不应当让计算机操作系统指派它的进程标识符。这是因为在因特网上使用的计算机的操作系统种类很多,而不同的操作系统又使用不同格式的进程标识符。l为了使运行不同操作系统的计算机的应用进程能够互相通信,就必须用统一的方法对 TCP/IP 体系的应用进程进行标志。需要解决的问题 l由于进程的创建和撤销都是动态的,发送方几乎无法识别其他机器上的进程。l有时我们会改换接收报文的进程,但并不需要通知所有发送方。l
20、我们往往需要利用目的主机提供的功能来识别终点,而不需要知道实现这个功能的进程。端口号(protocol port number)简称为端口(port)l解决这个问题的方法就是在运输层使用协议端口号(protocol port number),或通常简称为端口(port)。l虽然通信的终点是应用进程,但我们可以把端口想象是通信的终点,因为我们只要把要传送的报文交到目的主机的某一个合适的目的端口,剩下的工作(即最后交付目的进程)就由 TCP 来完成。软件端口与硬件端口l在协议栈层间的抽象的协议端口是软件端口。l路由器或交换机上的端口是硬件端口。l硬件端口是不同硬件设备进行交互的接口,而软件端口是应
21、用层的各种协议进程与运输实体进行层间交互的一种地址。TCP 的端口 l端口用一个 16 位端口号进行标志。l端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。在因特网中不同计算机的相同端口号是没有联系的。三类端口 l熟知端口,数值一般为 01023。l登记端口号,数值为102449151,为没有熟知端口号的应用程序使用的。使用这个范围的端口号必须在 IANA 登记,以防止重复。l客户端口号或短暂端口号,数值为4915265535,留给客户进程选择暂时使用。当服务器进程收到客户进程的报文时,就知道了客户进程所使用的动态端口号。通信结束后,这个端口号可供其他客户进程以后使用。5.
22、2 用户数据报协议 UDP 5.2.1 UDP 概述 lUDP 只在 IP 的数据报服务之上增加了很少一点的功能,即端口的功能和差错检测的功能。l虽然 UDP 用户数据报只能提供不可靠的交付,但 UDP 在某些方面有其特殊的优点。UDP 的主要特点 lUDP 是无连接的,即发送数据之前不需要建立连接。lUDP 使用尽最大努力交付,即不保证可靠交付,同时也不使用拥塞控制。lUDP 是面向报文的。UDP 没有拥塞控制,很适合多媒体通信的要求。lUDP 支持一对一、一对多、多对一和多对多的交互通信。lUDP 的首部开销小,只有 8 个字节。面向报文的 UDPl发送方 UDP 对应用程序交下来的报文,
23、在添加首部后就向下交付 IP 层。UDP 对应用层交下来的报文,既不合并,也不拆分,而是保留这些报文的边界。l应用层交给 UDP 多长的报文,UDP 就照样发送,即一次发送一个报文。l接收方 UDP 对 IP 层交上来的 UDP 用户数据报,在去除首部后就原封不动地交付上层的应用进程,一次交付一个完整的报文。l应用程序必须选择合适大小的报文。UDP 是面向报文的 IP 数据报的数据部分IP 首部IP 层UDP 首部UDP 用户数据报的数据部分运输层应用层报文应用层5.2.2 UDP 的首部格式 伪首部源端口目的端口长 度检验和数 据首 部UDP长度源 IP 地址目的 IP 地址017IP 数据
24、报字节44112122222字节发送在前数 据首 部UDP 用户数据报UDP 基于端口的分用 IP 层UDP 数据报到达端口 2端口 3端口 1UDP 分用5.3 传输控制协议 TCP 概述 5.3.1 TCP 最主要的特点 lTCP 是面向连接的运输层协议。l每一条 TCP 连接只能有两个端点(endpoint),每一条 TCP 连接只能是点对点的(一对一)。lTCP 提供可靠交付的服务。l TCP 提供全双工通信。l面向字节流。7 68HTCP 面向流的概念 发送 TCP 报文段发送方接收方把字节写入发送缓存从接收缓存读取字节应用进程应用进程123018171615141920214513
25、1211H109 H加上 TCP 首部构成 TCP 报文段TCPTCP字节流字节流H表示 TCP 报文段的首部x表示序号为 x 的数据字节TCP 连接应当注意lTCP 连接是一条虚连接而不是一条真正的物理连接。lTCP 对应用进程一次把多长的报文发送到TCP 的缓存中是不关心的。lTCP 根据对方给出的窗口值和当前网络拥塞的程度来决定一个报文段应包含多少个字节(UDP 发送的报文长度是应用进程给出的)。lTCP 可把太长的数据块划分短一些再传送。TCP 也可等待积累有足够多的字节后再构成报文段发送出去。5.3.2 TCP 的连接 lTCP 把连接作为最基本的抽象。l每一条 TCP 连接有两个端
26、点。lTCP 连接的端点不是主机,不是主机的IP 地址,不是应用进程,也不是运输层的协议端口。TCP 连接的端点叫做套接字(socket)或插口。l端口号拼接到(contatenated with)IP 地址即构成了套接字。TCP 可靠通信的具体实现 lTCP 连接的每一端都必须设有两个窗口一个发送窗口和一个接收窗口。l TCP 的可靠传输机制用字节的序号进行控制。TCP 所有的确认都是基于序号而不是基于报文段。l TCP 两端的四个窗口经常处于动态变化之中。lTCP连接的往返时间 RTT 也不是固定不变的。需要使用特定的算法估算较为合理的重传时间。TCP首部20 字节的固定首部目 的 端 口
27、数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FIN32 位SYNRSTPSHACKURG位 0 8 16 24 31填 充TCP 数据部分TCP 首部TCP 报文段IP 数据部分IP 首部发送在前5.5 TCP 报文段的首部格式 TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充源端口和目的端口字段各占 2 字节。端口是运输层与应用层的服务接口。运输层的复用和分用功能都要通过端口才能实现。
28、TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充序号字段占 4 字节。TCP 连接中传送的数据流中的每一个字节都编上一个序号。序号字段的值则指的是本报文段所发送的数据的第一个字节的序号。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充确认号字段占 4 字节,是期望收到对方的下一个报文
29、段的数据的第一个字节的序号。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充数据偏移(即首部长度)占 4 位,它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。“数据偏移”的单位是 32 位字(以 4 字节为计算单位)。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填
30、 充保留字段占 6 位,保留为今后使用,但目前应置为 0。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充紧急 URG 当 URG 1 时,表明紧急指针字段有效。它告诉系统此报文段中有紧急数据,应尽快传送(相当于高优先级的数据)。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充确认
31、ACK 只有当 ACK 1 时确认号字段才有效。当 ACK 0 时,确认号无效。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充推送 PSH(PuSH)接收 TCP 收到 PSH=1 的报文段,就尽快地交付接收应用进程,而不再等到整个缓存都填满了后再向上交付。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG位 0 8
32、 16 24 31填 充复位 RST(ReSeT)当 RST 1 时,表明 TCP 连接中出现严重差错(如由于主机崩溃或其他原因),必须释放连接,然后再重新建立运输连接。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充同步 SYN 同步 SYN=1 表示这是一个连接请求或连接接受报文。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTP
33、SHACKURG位 0 8 16 24 31填 充终止 FIN(FINis)用来释放一个连接。FIN 1 表明此报文段的发送端的数据已发送完毕,并要求释放运输连接。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充窗口字段 占 2 字节,用来让对方设置发送窗口的依据,单位为字节。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHAC
34、KURG位 0 8 16 24 31填 充检验和 占 2 字节。检验和字段检验的范围包括首部和数据这两部分。在计算检验和时,要在 TCP 报文段的前面加上 12 字节的伪首部。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充紧急指针字段 占 16 位,指出在本报文段中紧急数据共有多少个字节(紧急数据放在本报文段数据的最前面)。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针
35、窗 口确 认 号保 留FINSYNRSTPSHACKURG比特 0 8 16 24 31填 充选项字段 长度可变。TCP 最初只规定了一种选项,即最大报文段长度 MSS。MSS 告诉对方 TCP:“我的缓存所能接收的报文段的数据字段的最大长度是 MSS 个字节。”MSS(Maximum Segment Size)是 TCP 报文段中的数据字段的最大长度。数据字段加上 TCP 首部才等于整个的 TCP 报文段。其他选项l窗口扩大选项 占 3 字节,其中有一个字节表示移位值 S。新的窗口值等于TCP 首部中的窗口位数增大到(16+S),相当于把窗口值向左移动 S 位后获得实际的窗口大小。l时间戳选
36、项占10 字节,其中最主要的字段时间戳值字段(4 字节)和时间戳回送回答字段(4 字节)。TCP首部20字节固定首部目 的 端 口数据偏移检 验 和选 项 (长 度 可 变)源 端 口序 号紧 急 指 针窗 口确 认 号保 留FINSYNRSTPSHACKURG位 0 8 16 24 31填 充填充字段 这是为了使整个首部长度是 4 字节的整数倍。TCP 的流量控制 利用滑动窗口实现流量控制l一般说来,我们总是希望数据传输得更快一些。但如果发送方把数据发送得过快,接收方就可能来不及接收,这就会造成数据的丢失。l流量控制(flow control)就是让发送方的发送速率不要太快,既要让接收方来得
37、及接收,也不要使网络发生拥塞。l利用滑动窗口机制可以很方便地在 TCP 连接上实现流量控制。以字节为单位的滑动窗口前移不允许发送已发送并收到确认A 的发送窗口=20允许发送的序号26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56B 期望收到的序号前沿后沿前移收缩根据 B 给出的窗口值A 构造出自己的发送窗口 TCP 标准强烈不赞成发送窗口前沿向后收缩 不允许发送已发送并收到确认A 的发送窗口位置不变允许发送但尚未发送26 27 28 29 30 31 32 33
38、 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55已发送但未收到确认56P1P2P3不允许接收已发送确认并交付主机B 的接收窗口允许接收26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56未按序收到可用窗口A 发送了 11 个字节的数据 P3 P1=A 的发送窗口(又称为通知窗口)P2 P1=已发送但尚未收到确认的字节数P3 P2=允许发送但尚未发送的字节数(又称为可用窗口)允许发送
39、但尚未发送A 的发送窗口向前滑动26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55已发送并收到确认不允许发送已发送但未收到确认56P1P2P3允许接收B 的接收窗口向前滑动26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55已发送确认并交付主机不允许接收56未按序收到A 收到新的确认号,发送窗口向前滑动 先存下,等待缺少的数据的到达不允许发送已
40、发送并收到确认A 的发送窗口已满,有效窗口为零26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55已发送但未收到确认56P1P2P3A 的发送窗口内的序号都已用完,但还没有再收到确认,必须停止发送。发送缓存 最后被确认的字节发送应用程序发送缓存最后发送的字节发送窗口TCP序号增大接收缓存接收应用程序已收到接收窗口TCP接收缓存下一个读取的字节序号增大下一个期望收到的字节(确认号)发送缓存与接收缓存的作用l发送缓存用来暂时存放:发送应用程序传送给发送方 TCP 准备发送的
41、数据;TCP 已发送出但尚未收到确认的数据。l接收缓存用来暂时存放:按序到达的、但尚未被接收应用程序读取的数据;不按序到达的数据。需要强调三点lA 的发送窗口并不总是和 B 的接收窗口一样大(因为有一定的时间滞后)。lTCP 标准没有规定对不按序到达的数据应如何处理。通常是先临时存放在接收窗口中,等到字节流中所缺少的字节收到后,再按序交付上层的应用进程。lTCP 要求接收方必须有累积确认的功能,这样可以减小传输开销。TCP 的运输连接管理1.运输连接的三个阶段 l运输连接就有三个阶段,即:连接建立、数据传送和连接释放。运输连接的管理就是使运输连接的建立和释放都能正常地进行。l连接建立过程中要解
42、决以下三个问题:要使每一方能够确知对方的存在。要允许双方协商一些参数(如最大报文段长度,最大窗口大小,服务质量等)。能够对运输实体资源(如缓存大小,连接表中的项目等)进行分配。客户服务器方式 lTCP 连接的建立都是采用客户服务器方式。l主动发起连接建立的应用进程叫做客户(client)。l被动等待连接建立的应用进程叫做服务器(server)。用三次握手建立 TCP 连接 SYN=1,seq=xCLOSEDCLOSED主动打开被动打开AB客户服务器5.9.1 TCP 的连接建立A 的 TCP 向 B 发出连接请求报文段,其首部中的同步位 SYN=1,并选择序号 seq=x,表明传送数据时的第一
43、个数据字节的序号是 x。用三次握手建立 TCP 连接 SYN=1,seq=xCLOSEDCLOSED主动打开被动打开AB客户服务器5.9.1 TCP 的连接建立SYN=1,ACK=1,seq=y,ack=x 1 B 的 TCP 收到连接请求报文段后,如同意,则 发回确认。B 在确认报文段中应使 SYN=1,使 ACK=1,其确认号ack=x 1,自己选择的序号 seq=y。SYN=1,seq=xACK=1,seq=x+1,ack=y 1CLOSEDCLOSED主动打开被动打开AB客户服务器SYN=1,ACK=1,seq=y,ack=x 1 A 收到此报文段后向 B 给出确认,其 ACK=1,确
44、认号 ack=y 1。A 的 TCP 通知上层应用进程,连接已经建立。SYN=1,seq=xACK=1,seq=x+1,ack=y 1CLOSEDCLOSED数据传送主动打开被动打开AB客户服务器SYN=1,ACK=1,seq=y,ack=x 1 B 的 TCP 收到主机 A 的确认后,也通知其上层 应用进程:TCP 连接已经建立。SYN-SENTESTAB-LISHEDSYN-RCVDLISTENESTAB-LISHED用三次握手建立 TCP 连接的各状态 SYN=1,seq=xACK=1,seq=x+1,ack=y 1CLOSEDCLOSED数据传送主动打开被动打开AB客户服务器5.9.1
45、 TCP 的连接建立SYN=1,ACK=1,seq=y,ack=x 1FIN=1,seq=uCLOSED主动关闭数据传送ESTAB-LISHEDESTAB-LISHEDAB客户服务器CLOSED5.9.2 TCP 的连接释放 数据传输结束后,通信的双方都可释放连接。现在 A 的应用进程先向其 TCP 发出连接释放 报文段,并停止再发送数据,主动关闭 TCP 连接。A 把连接释放报文段首部的 FIN=1,其序号 seq=u,等待 B 的确认。FIN=1,seq=uACK=1,seq=v,ack=u 1主动关闭数据传送通知应用进程ESTAB-LISHEDESTAB-LISHEDAB客户服务器5.9
46、.2 TCP 的连接释放 B 发出确认,确认号 ack=u 1,而这个报文段自己的序号 seq=v。TCP 服务器进程通知高层应用进程。从 A 到 B 这个方向的连接就释放了,TCP 连接 处于半关闭状态。B 若发送数据,A 仍要接收。FIN=1,seq=uACK=1,seq=v,ack=u 1FIN=1,ACK=1,seq=w,ack=u 1主动关闭被动关闭数据传送通知应用进程ESTAB-LISHEDESTAB-LISHEDAB客户服务器数据传送5.9.2 TCP 的连接释放 若 B 已经没有要向 A 发送的数据,其应用进程就通知 TCP 释放连接。FIN=1,seq=uACK=1,seq=
47、v,ack=u 1FIN=1,ACK=1,seq=w,ack=u 1主动关闭被动关闭数据传送通知应用进程ESTAB-LISHEDESTAB-LISHEDAB客户服务器数据传送5.9.2 TCP 的连接释放 A 收到连接释放报文段后,必须发出确认。ACK=1,seq=u+1,ack=w 1FIN=1,seq=uACK=1,seq=v,ack=u 1FIN=1,ACK=1,seq=w,ack=u 1主动关闭被动关闭数据传送通知应用进程ESTAB-LISHEDESTAB-LISHEDAB客户服务器数据传送5.9.2 TCP 的连接释放 在确认报文段中 ACK=1,确认号 ack w 1,自己的序号
48、seq=u+1。ACK=1,seq=u+1,ack=w 1CLOSEDACK=1,seq=u+1,ack=w 1FIN=1,seq=uACK=1,seq=v,ack=u 1FIN=1,ACK=1,seq=w,ack=u 1FIN-WAIT-1CLOSE-WAITFIN-WAIT-2LAST-ACK等待 2MSLTIME-WAIT主动关闭被动关闭数据传送通知应用进程ESTAB-LISHEDESTAB-LISHEDAB客户服务器数据传送CLOSED5.9.2 TCP 的连接释放 TCP 连接必须经过时间 2MSL 后才真正释放掉。常见端口号l20 FTP(文件传输协议)数据端口 l21 FTP(文
49、件传输协议)控制端口 l22 SSH 安全 Shell服务 l23 telnet Telnet(终端仿真服务)l25 SMTP 简单邮件传输协议(SMTP)l53 DNS 域名解析服务(如 BIND)l67 DHCP 动态主机配置协议服务使用 l68 DHCP 动态主机配置协议客户使用 l69 TFTP 简单文件传输协议l80 HTTP 用于万维网(WWW)服务的超文本传输协议 l110 POP3 邮局协议版本3 l143 IMAP 互联网消息存取协议 l161 SNMP 简单网络管理协议 l179 BGP 边界网络协议 l443 https 安全超文本传输协议 l520 RIP 路由信息协议
50、 Wireshark抓包工具的使用lwireshark是一款抓包软件,比较易用,在平常可以利用它抓包,分析协议或者监控网络,是一个比较好的工具。(1)Wireshark的启动界面和抓包界面的启动界面和抓包界面抓包界面的启动按file下面的按钮之后会出现l这个是网卡的显示,因为我有虚拟机所以会显示虚拟网卡,我们现在抓的是真实网卡上的包所以在以太网卡右边点击start 开始抓包这个就是抓包的界面了(也是主界面)(2)Wireshark主窗口由如下部分组成:主窗口由如下部分组成:l菜单用于开始操作。l主工具栏提供快速访问菜单中经常用到的项目的功能。lFiter toolbar/过滤工具栏提供处理当前
侵权处理QQ:3464097650--上传资料QQ:3464097650
【声明】本站为“文档C2C交易模式”,即用户上传的文档直接卖给(下载)用户,本站只是网络空间服务平台,本站所有原创文档下载所得归上传人所有,如您发现上传作品侵犯了您的版权,请立刻联系我们并提供证据,我们将在3个工作日内予以改正。