千家信息网

IP协议和TCP协议的分析

发表于:2025-01-19 作者:千家信息网编辑
千家信息网最后更新 2025年01月19日,一,TCP/IP协议栈的概述TCP/IP协议栈是由美国国防部(DoD)在20世纪60年代创建的(比OSI模型还早),是一种具体实现标准。分为4层:网络接入层(链路层),Internet层(网络层),主
千家信息网最后更新 2025年01月19日IP协议和TCP协议的分析


一,TCP/IP协议栈的概述

TCP/IP协议栈是由美国国防部(DoD)在20世纪60年代创建的(比OSI模型还早),是一种具体实现标准。

分为4层:网络接入层(链路层),Internet层(网络层),主机到主机层(传输层),应用层

由于TCP/IP协议栈涉及的知识点很多,而其中最主要的协议是IP协议和TCP协议,故本文主要是针对IP和TCP协议来分析,其他的知识点后续补上。

二,IP协议

IP(Internet Protocol,网际协议)是TCP/IP协议栈中最重要的协议(位于网络层),用于实现数据的不可靠面向无连接通信,实现三层数据封装与IP寻址。

什么是不可靠?

不可靠的意思就是它不能保证IP数据包能百分百到达目的地

什么是面向无连接?

意思是I P并不维护任何关于后续数据报的状态信息。每个数据报的处理是相互独立的。IP数据报可以不按发送顺序接收。如果一信源向相同的信宿发送两个连续的数据报(先是 A,然后是B) ,每个数据报都是独立地进行路由选择,可能选择不同的路线,因此B可能在A到达之前先到达。

1.IP头部格式

(1)版本

4bit,用于标记IP协议的版本。IPv4---->4;IPv6--->6.

(2)首部长度

4bit,可表示的最大十进制为15.指示IP报头长度,指出IP报头的结束位置或数据的开始位置

接收方可知道如何根据首部长度来解封装

(3)服务类型

ToS,8bit,提供QoS服务质量技术用于实现流量标记

(4)总长度

总长度指首部和数据之和的长度,单位为字节。字段16bit。

(5)标识符

16bit,用于标志分片的进程

(6)标志符

3bit,第一个比特位0:表示保留或未使用;第二个比特DF位:DF=1,表示该数据包不应该被分段;DF=0,表示可以根据需要对数据包进行分段。第三个比特位MF位:表示该分段是最后一个分段(比特为0)或者后面更多的分段(比特为1)。

(7)片偏移量

13bit,用于告知接收方每个分片距离IP头部的位置,才能实现有序的重新组装

(8)生存时间

8bit,TTL最大值为255;标记路径和防环。

(9)协议

8bit,标记上层协议

(10)首部检验和

16bit,校验数据包的完整性

(11)源IP地址

32bit,发送者的IP地址

(12)目的IP地址

32bit,接收者的IP地址

(13)选项

options,可变长度该字段为可选字段

常见:记录路由选项,时间戳选项以及用来增强traceroute程序的路由选项

(14)填充

Padding,可变长度,如果IP报头大小不是32比特的整数倍,则会在报头填充0直至32比特

(15)数据

可变长度,是在IP包中进行传输并通过协议字段进行标识的数据



三,TCP协议

TCP(Transmission Control Protocol,传输控制协议)是TCP/IP协议栈中算法最多,功能最繁杂的重要的协议(位于传输层)。

  1. TCP提供的功能

    面向连接(三次握手,四次挥手)

    可靠传输(超时重传,快速重传)

    流量控制(滑动窗口,拥塞控制)

    多路复用(套接字,Socket)

2.原理

2.1 面向连接(三次握手,四次挥手)

三次握手:(下图所示)

注:三次握手是一个会话的建立过程,此过程没有正式的数据包的传送。

SYN(同步位)用于实现端口请求,ACK(确认位)用于实现端口回复


四次挥手(见下图):


问题:为什么关闭时要四次,而不是三次呢?

因为在一方传输数据结束的时候,可能另一方还在传输数据,所以需要四次。


2.2 可靠传输

见下图:

利用Seq(序列号)和ACK(确认号)来保证可靠传输。


2.3 流量控制

利用滑动窗口来达到流量控制

2.4 多路复用

利用套接字socket来实现多路复用,socket=ip+port。比如多个客户端要连接同一个服务器,就需要多路复用。





















0