TCP/IP详解

本文详细介绍了OSI七层模型的各层功能和通信过程,探讨了IP协议的IPv4和IPv6首部结构,深入讲解了TCP协议的首部格式,三次握手和四次挥手过程,以及流量控制和拥塞控制策略。此外,还涵盖了UDP协议的基本概念和HTTP协议的请求响应报文结构,包括HTTP首部字段和方法。

目录

一、OSI参考模型

1.图示

2.OSI七层模型各自作用

3.七层通信过程

二、IP协议

1.IPv4首部

2.IPv6首部

三、TCP协议

1.tcp首部格式

2.握手挥手图示

3.握手流程

4.为什么要三次握手?

5.四次挥手流程

6.为什么要四次分手?

7.为什么要等待2MSL?

8.TCP流量控制

9.TCP拥塞控制

9.1 慢开始和拥塞避免

9.2 快重传和快恢复

四、UDP协议

五、HTTP协议

1.http请求报文

2.http响应报文

3.method: 请求方法,标明客户端希望服务器对资源执行的动作

4.status:标记请求处理过程中发生的情况,如200,301, 302, 404, 502

5.HTTP 首部字段

6.图示为http跟踪流实例,可以很好的了解一个http的请求和响应流程

7.Get请求抓包情况

8.Post请求抓包情况,和get请求不一样的是post的数据是放到了包体部分,而get请求是放到了heads里面

源码等资料获取方法


一、OSI参考模型

1.图示

 

2.OSI七层模型各自作用

应用层

为应用程序提供服务并规定应用程序中通信的相关细节。包括文件传输、电子邮件、远程登录等协议。

表示层

将应用处理的信息转换为适合网络传输的格式,或将来自下一层的数据转换为上层能够处理的格式。因此它主要负责数据格式的转换。

会话层

负责建立和断开通信连接(数据流动的逻辑通路),以及数据的分割等数据传输相关的管理。

传输层

起着可靠传输的作用。只在通信双方节点上进行处理,而无需在路由器上处理。会话层负责决定建立连接和断开连接的时机,而传输层进行实际的建立和断开处理

网络层

将数据传输到目标地址。目标地址可以是多个网络通过路由器连接而成的某个地址。因此这一层主要负责寻址和路由选择

数据链路层

负责物理层上的互联、节点之间的通信传输。例如与1个以太网相连的2个节点之间的通信。将0、1序列划分为具有意义的数据帧传送给对端(数据帧的生成与接收)。

物理层

负责0、1比特流(0、1序列)与电压的高低、光的闪灭之间的互换

3.七层通信过程

二、IP协议

1.IPv4首部

  • 版本:表示 IP 协议的版本。
  • 首部长度:首部的长度,单位是 4 字节。
  • 区分服务:暂时无意义。
  • 总长度:首部和数据之和的长度,单位为字节,当数据报的总长度超过数据链路层的最大传送单元时就必须进行分片处理。将一个 IP 数据报分成多个分片,每个分片都具有 IP 首部。
  • 标识:对分片进行标识,同一个数据报的分片具有同样的标识。
  • 标志:占 3 位。最低位记为 MF(More Fragment),MF = 1 表示后面“还有分片”,MF = 0 表示这是多个数据报片中的最后一个;中间一位记为 DF(Don't Fragment),只有当 DF = 0 时才允许分片。
  • 片偏移:表示该分片在原分组中的相对位置,片偏移以 8 个字节为偏移单位。
  • 生存时间:TTL,表示该数据报在网络中可以被转发的次数,每经过一次转发,这个值减 1。
  • 首部校验和:这个字段只检验数据报的首部,不检验数据部分。
  • 源地址
  • 目的地址
  • 可变部分:可变部分中包括用于增加 IP 数据报功能的选项,这些选项一个一个拼起来,中间不需要分隔符,最后用 0 填充为 4 字节的整数倍。

WireShark抓包的情况

可以看到首部长度值为5行,20bytes(5行*4字节每行=20字节)

首部长度是4bit,而2^4是16,所以它的取值范围是0-15(也可理解为4bit即是4个1,转换成十进制就是15),图中每行是4个字节(32bits),所以最大长度就是15*4=60字节。

2.IPv6首部

  • 版本:协议的版本,对于 IPv6 是 6.
  • 流标号:“流”指互联网络上从特定源点到特定终点的一系列数据报,所有属于同一个流的数据报都具有同样的流标号。
  • 有效载荷长度:表示 IPv6 数据报除基本首部以外的字节数。
  • 下一个首部:当没有扩展首部时,下一个首部字段指出基本首部后面的数据应该移交给哪个高层协议。当出现扩展首部时,下一个首部字段的值表示后面第一个扩展首部的类型。
  • 数据报图中经过的路由器不处理扩展首部。
  • IPv6 采用冒号十六进制记法,如 68E6:8C64:FFFF:FFFF:0:1180:960A:FFFF,冒号十六进制记法允许零压缩,即一连串连续的零可以为一对冒号所取代,任一地址中只能够使用一次零压缩。

三、TCP协议

面向连接,提供可靠的服务,有流量控制,拥塞控制,无重复、无丢失、无差错,面向字节流(把应用层传下来的报文看成字节流,把字节流组织成大小不等的数据块),只能是点对点,首部 20 字节,全双工

1.tcp首部格式

  • 序号 :用于对字节流进行编号,例如序号为 301,表示第一个字节的编号为 301,如果携带的数据长度为 100 字节,那么下一个报文段的序号应为 401。
  • 确认号 :期望收到的下一个报文段的序号。例如 B 正确收到 A 发送来的一个报文段,序号为 501,携带的数据长度为 200 字节,因此 B 期望下一个报文段的序号为 701,B 发送给 A 的确认报文段中确认号就
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值