TCPIP协议基础
网络模型
-OSI参考模型
-OSI参考模型各层功能
-TCP/IP网络模型
-TCP/IP协议栈
OSI参考模型
– 为了解决网络设备之间的兼容性问题,国际标准化组织ISO于1984年提出了OSI RM(开放系统互连参考模型)。
OSI参考模型一共有七层:
7 | 应用层 |
---|---|
6 | 表示层 |
5 | 会话层 |
4 | 传输层 |
3 | 网络层 |
2 | 数据链路层 |
1 | 物理层 |
对等通信
OSI参考模型采用对等通信,即:
- 同层之间使用相同的协议
- 下层为上层提供服务
封装与解封装
OSI参考模型各层功能
⚡第一层:物理层(Physical Layer)
🧠 作用:
- 负责数据的物理传输,即比特流(0和1)的发送与接收。
- 定义了物理媒介的电气、机械、功能和过程特性。
📌 功能:
-
传输介质(如双绞线、光纤、无线等)。
-
电压电平、信号速率、连接器类型。
-
比特同步。
-
设备如:网卡、集线器、光模块。
📦 第二层:数据链路层(Data Link Layer)
🧠 作用:
- 在同一网络内,负责相邻节点之间的可靠通信。
- 使用**物理地址(MAC地址)**识别设备。
- 检测和纠正数据在传输过程中出现的错误。
📌 功能:
-
帧(Frame)的封装与解封装。
-
媒体访问控制(如CSMA/CD)。
-
错误检测(如CRC)、流量控制。
-
协议如:Ethernet(以太网)、PPP、HDLC。
🌐 第三层:网络层(Network Layer)
🧠 作用:
- 负责数据包从源端到目的端的路由选择与转发。
- 使用**逻辑地址(IP地址)**进行寻址和寻路。
- 可以跨越多个网络(异构网络间通信)。
📌 功能:
- IP协议:定义地址和路由(如IPv4、IPv6)。
- 路由协议:在路由协议之间传递路由信息并计算路由,为可路由协议选择转发路径的协议,如RIP、OSPF、BGP。
- 可路由协议:可以跨越三层设备进行路由转发的协议,如IP、IPX。
- 不可路由协议:不可跨越三层设备,也不能进行路由转发的协议,如:NETBEUI
- 分段与组装。
- 拥塞控制与网络互连。
🧱 第四层:传输层(Transport Layer)
🧠 作用:
- 实现端到端的数据传输。
- 提供可靠的传输服务,包括数据的分段、重组、流量控制、错误校验、重传机制等。
📌 功能:
- TCP(传输控制协议):可靠连接,有序传输(如网页访问)。
- UDP(用户数据报协议):不可靠传输,无连接,适用于语音、视频等实时服务。
- 端口地址识别,实现多个应用同时传输数据。
🧑🤝🧑 第五层:会话层(Session Layer)
🧠 作用:
- 管理和控制应用程序之间的会话(Session),即通信的起始、维护和终止。
- 支持全双工或半双工通信。
📌 功能:
- 会话建立、维护与终止。
- 对话同步(设置“检查点”来断点续传)。
- 授权与令牌控制。
🧠 第六层:表示层(Presentation Layer)
🧠 作用:
- 负责数据的表示方式转换,使发送方与接收方的数据格式一致。
- 可进行数据加密、解密、压缩、解压缩等操作。
📌 功能:
- 转换字符编码(如ASCII转EBCDIC)。
- 数据加密(如SSL/TLS)。
- 数据压缩(如JPEG、MP3等格式)。
🔒 第七层:应用层(Application Layer)
🧠 作用:
- 是用户和网络的直接交互界面。
- 提供应用程序之间通信的服务,如电子邮件、文件传输、远程登录等。
- 并不等于“应用程序”,而是网络通信中与应用最贴近的一层。
📌 功能:
TCP/IP网络模型分为TCP/IP标准模型和TCP/IP五层模型,也是我们现在最常用的两个模型:
4 | 应用层 |
---|---|
3 | 传输层 |
2 | 网络层 |
1 | 网络接口层 |
TCP/IP标准模型
5 | 应用层 |
---|---|
4 | 传输层 |
3 | 网络层 |
2 | 数据链路层 |
1 | 物理层 |
TCP/IP五层模型
TCP/IP协议栈
IP协议
-
IP协议特点
-
IP包头结构
-
MTU与IP分片
IP协议特点
-
IP是无连接的,在传输数据之前不需要建立连接。
-
IP提供的是尽力而为的服务,超过转发能力时直接丢弃。
-
IP数据包在网络中的传送是无序的,在转发过程中,不考虑到达接收端的顺序,每个数据包进行单独路由(即单独选择到达目地的路径)
-
IP分组传送是不可靠的,发送端只管发送数据,不关心接收端是否收到数据,IP的可靠性需要靠上层协议来解决。
IP包头结构
-
标识符:16位
- 同一IP数据包的各个分片的标识符相同
-
标志位(Flags):3位
-
第一位:没有使用
-
第二位:DF位,DF=1不允许对该包进行分片,DF=0允许分片
-
第三位:MF位,MF=1表示后面还有分片,MF=0表示是最后一个分片,后面没有分片了。
-
-
分段偏移量:13位
本分片数据载荷在原IP包数据在和中的相对位置,单位为7字节。
例如:一个4000字节的IP包在MTU=1500字节下的分片:
4000字节IP包的内容长3980字节(减去20字节的包头长度),内容的第一个字节偏移量为0.
第一个分片长1500字节,MF=1,分段偏移量0,包含原包内容1480字节;
第二个分片长1500字节,MF=1,分段偏移量185,含原包内容1480字节;
第三个分片长1040字节,MF=0,分段偏移量370,含原包内容1020字节
MTU与IP分片
IP分片说白了就是当一个IP包很大的时候,就是超过了MTU,那么接收方是无法直接接收这么大的数据包的,如果直接传输过来,接收方会直接把这个包丢掉,不会进行接收转发,那么该如何正确的去进行分片好让接收方能够正确的接收并且正确的进行重组呢,就像上面说到的标识符,从一个IP包分开的的数据包的标识符是一样的,这是一方面;另一方面就是通过上面的分段偏移量正确的去确认这个分片重组的顺序,因为IP传输是无序的,所以分段偏移量很重要,然后,为了能够传输更大的数据,这个分段偏移量通常会除以8,上面那个分段偏移量为185,乘以8后就是传输过来的数据1480字节,而第三个分段偏移量370,减去185后再乘以8其实就是传输过来的1020字节。还有一个需要注意点就是DF,当DF为1时,是不允许对该数据包进行分片的,如果这个不能分片的包被发出去了,处理数据包的接收方会直接扔掉,只有当DF为0时才能进行分片,还有就是接收方怎么知道分片是否接收完毕了,是通过MF确定的,当MF为1时,表示后面还有分片,当MF为0时,表示后面没有分片了,这个MF为0的分片就是最后一个分片。
-
MTU(最大传输单元)
-
链路层MTU:链路层能传的最大的帧,包含链路层头部。
-
网络层MTU:网络层能传的最大的包,包含网络层头部。
-
-
Cisco MTU命令含义
- Cisco设备在数据包进入接口和从接口发出时都检查MTU。
- MTU命令:最大二层净载荷长度,默认值为1500字节。
- IP MTU命令:最大IP数据包长度。
- MPLS MTU命令:最大MPLS数据报文长度。
- 配置MTU命令,也配置IP MTU和MPLS MTU命令
- IP MTU命令也影响IP报文转发;
- MPLS MTU影响MPLS报文转发;
- MTU命令不影响IP和MPLS报文转发,但影响其他报文转发。
- 配置MTU命令,不配置IP MTU和其他 MTU命令
- MTU命令影响所有报文转发。
-
路由器IP分片
- 数据包大于入接口MTU,Cisco设备将丢弃该包。
- 数据包大于出接口MTU
- 该包的DF=1时,丢弃该包;该包的DF=0时,将该包分片。
- IP分片只在目标主机上重组,不会在转发的设备上面重组。
TCP与UDP
- TCP协议概述
- TCP包头结构
- TCP工作机制
- UDP协议概述
- UDP包头结构
TCP协议概述
- Transmission Control Protocol,TCP(传输控制协议)
- TCP是面向连接的,数据传输需要经过建立连接、传输数据、断开连接三个阶段
- 全双工通信,数据可在同一连接上同一时间内双向流动
- TCP提供有序的数据传输,接收端按字节对数据进行确认
- TCP数据传输是可靠的,包头中含有校验和可以对数据进行校验,并且具有超时重传机制重新传丢失的数据。
- TCP提供高质量的传输服务,通过滑动窗口机制实现对流量的控制
- TCP适用于可靠性要求高的应用
- TCP是面向连接的,数据传输需要经过建立连接、传输数据、断开连接三个阶段
TCP包头结构
-
字节号
- TCP把要再一个连接上发送的数据都按字节编号。通信双方的编号是相互独立的,编号不一定要从0开始,TCP选择0-(2的32次方-1)之间随机选择一个数作为第一个字节的编号。
-
序号
- TCP把要在一个连接上发送的数据分成若干报文段,然后给每个报文段指派一个序号,序号就是该报文第一个字节的编号,作用和IP里面的分段偏移量大差不差
-
确认号
- 期望接收到的下一个字节的编号。
-
序号案例
- 假设一条TCP连接要传送一个5000字节的文件。第一个字节的编号是10001.如果该数据用5个报文段来发送,且每一个报文携带1000字节的数据,那么每个报文段的序号分别是什么?
- 假设一条TCP连接要传送一个5000字节的文件。第一个字节的编号是10001.如果该数据用5个报文段来发送,且每一个报文携带1000字节的数据,那么每个报文段的序号分别是什么?
-
编码位(TCP Flag)
-
FIN:结束标志;为1时,请求断开连接。
-
SYN:同步标志;为1时,请求建立连接。
-
RST:复位标志;为1时。请求重新建立TCP连接。
-
PSH:通知接收端立即将数据交给用户进程,不要停留在缓存中,等待更多的数据。
-
ACK:确认标志;确认号有效位,表明该数据包包含确认信息。
-
URG:紧急标志;紧急指针有效位,与16位紧急指针配合使用。
-
TCP工作机制
TCP连接建立–三次握手机制
- 第一次A向B发起请求建立连接,SYN位置为1,SEQ为一个随机数x。
- 第二次B向A回应确认连接,SYN不变还是置为1,此时ACK位置为1,表示确认连接,ack为下一个期望值,那就是x+1,SEQ还是一个随机数y。
- 第三次A向B确认连接,此时请求已经完成,不需要有SYN位,ACK位为1,ack为y+1,为下个期望值,SEQ为x+1.
此时连接成功建立。
简单说明:
第一次握手(SYN)
➤ 客户端发送一个 SYN
报文,表示:
“我要连接你,请准备好接收数据。”
- 带上初始序列号(如
Seq = x
)
第二次握手(SYN + ACK)
➤ 服务器收到后,回复 SYN + ACK
报文,表示:
“我知道了,也准备好接收你的数据。”
- 确认号
Ack = x + 1
,并带上自己的序列号Seq = y
第三次握手(ACK)
➤ 客户端收到后,发送 ACK
报文,表示:
“我确认了,连接可以建立了。”
-
确认号
Ack = y + 1
-
TCP连接建立–TCP MSS
- TCP MSS是TCP的一个重要选项,TCP数据分段的最大长度,该参数再三次握手时发给对方。
- TCP MSS是TCP的一个重要选项,TCP数据分段的最大长度,该参数再三次握手时发给对方。
这个东西说白了就是A那边一次只能收1460字节的数据包,所以建立连接的时候会告知B,而B那边一次只能收1452字节的数据包,反过来告知A,便于建立连接之后,传输数据的时候不会乱套。
-
TCP连接建立——TCP MSS
-
网络设备干预TCP MSS协商,可解决大TCP报文不通的问题。
-
像在这里,中间设备的路由器就干预了连接,把MSS从1460改成了1200,因为路由器一次发不了1460字节这么大的包,所以会进行干预修改。
-
TCP数据传输
-
传输确认机制
-
A发送一个分片的包,B根据seq进行重组,重组完成后,会发送一个包(ack=4097)给A,告知A我已经接收完毕,并且没有出错。
-
TCP数据传输
-
超时重传机制
-
像这种情况,A在给B发送数据的时候,丢了一个包,B就会发送确认号给A,告知A seq=1025这个数据包我没有收到,A在收到B的确认之后,会把seq=1025这个包重新发送给B,这里要注意,A不会全部重发,而是只发丢失的那一个或那几个包。
-
TCP数据传输
-
双向传输机制
-
传输不是单向的,A发了包,那么B就要有回应。
-
TCP连接断开——四次断开机制
原理和建立连接机制是差不多的,简单说明:
第一次挥手(FIN)
➤ 主动关闭方发送一个 FIN
报文,表示:
“我没有数据要发送了,但我还可以接收。”
第二次挥手(ACK)
➤ 被动关闭方回复一个 ACK
报文,表示:
“我知道了,你可以不再发数据了。”
(此时连接是半关闭状态)
第三次挥手(FIN)
➤ 被动关闭方处理完剩下的数据后,也发送 FIN
报文,表示:
“我也没有数据要发了。”
第四次挥手(ACK)
➤ 主动关闭方收到这个 FIN
后,回复 ACK
报文,表示:
“我知道你也结束了。”
-
TCP连接断开——四次断开与三次断开
-
大多数TCP实现允许在连接终止时有两种选择:三次握手和具有半关闭选项的四次握手。
-
说直白点就是当服务器那边没有数据要传给主机时,那就是采用的三次挥手。
-
TCP流量控制
-
窗口机制:
作用:用来控制TCP一次能够连续传输多少数据而不用等待确认
窗口大小:表示“还能发送但尚未确认的字节数”。
如:如果窗口大小为500字节,那么发送方可以连续发送500字节,不用等待对方确认后再继续发送。
-
滑动窗口机制
-
TCP为每个方向的数据传送都使用两个窗口(发送窗口和接收窗口),一共4个窗口
TCP通过强制发送发送方和接收方不断调整窗口大小,来实现流量控制。
当出现拥塞时,窗口大小减半(把资源还给计算机,快速解决数据传输拥塞的问题);
当传输稳定时,窗口慢慢变大。
UDP协议概述
- User Datagram Protocol,UDP(用户数据报协议)
- UDP是无连接的,数据传输之前不需要建立连接
- UDP是不可靠的,发送端只管发送数据,不管接收方是否收到数据,UDP传输数据的可靠性需要应用层来解决
- UDP只有校验和机制,只能做简单的差错控制
- UDP没有流量控制机制
- UDP包头小,开销低,传输效率高
UDP包头结构
- UDP包头结构
可以看到包头结构相比TCP包头非常简洁
-
UDP校验和的计算
-
涉及了三个部分:伪IP头部、UDP头部数据
为什么叫伪IP头部,因为只包含了一部分IP头,所以叫伪IP头部
-
上层协议标识
- 上层协议标识
- 常见以太网类型号
- 常见IP协议号
- 常见TCP端口号
- 常见UDP端口号