4.22 TCPIP协议基础

一、三大网络模型

1.1 各层功能

  1. 物理层:是 OSI 模型的最底层,主要负责处理物理介质上的信号传输。它定义了硬件设备、传输介质(如电缆、光纤、无线频段)的电气、机械、功能和规程特性,确保数据能够在物理介质上进行传输。例如,规定了网线的接口类型、信号的电压值、传输速率等。
  2. 数据链路层:负责将物理层接收到的信号转换为数据帧,并进行错误检测和纠正。它通过 MAC地址来标识网络中的设备(标识上层数据),实现设备之间的可靠数据传输。
  3. 网络层:主要功能是实现网络之间的数据路由和寻址。它通过 IP 地址来标识网络中的主机和网络,根据网络拓扑结构和路由协议,选择最佳的路径将数据包从源主机传输到目标主机。网络层还负责处理数据包的分片和重组,以适应不同网络链路的 MTU(最大传输单元)限制。
  4. 传输层:为应用程序提供端到端的通信服务。它负责在不同主机的应用程序之间建立、维护和管理连接,确保数据的可靠传输。传输层使用端口号来标识不同的应用程序进程,常见的传输层协议有 TCP(传输控制协议)和 UDP(用户数据报协议)。TCP 提供可靠的面向连接的服务,UDP 则提供不可靠的无连接服务。
  5. 会话层:主要负责建立、管理和终止会话。它协调不同主机上应用程序之间的通信会话,包括会话的建立、维护和终结等功能。会话层还可以提供会话管理的服务,如会话的恢复和重新连接等。
  6. 表示层:负责处理数据的表示和转换,确保不同系统之间能够正确地理解和处理数据。它包括数据的加密和解密、压缩和解压缩、字符编码转换等功能。例如,将不同字符集的文本进行转换,或者对视频、音频等数据进行格式转换,以适应接收方的要求。
  7. 应用层:是 OSI 模型的最高层,直接面向用户和应用程序。它提供了各种网络服务和应用程序接口,如 HTTP(超文本传输协议)用于网页浏览、SMTP(简单邮件传输协议)用于电子邮件发送、FTP(文件传输协议)用于文件传输等。应用层负责将用户的请求转换为网络能够理解的格式,并将服务器的响应转换为用户能够理解的形式。

1.2 TCP/IP协议栈

二、IP协议

2.1 IP包头结构

  1. 版本(Version):占 4 位,用于标识 IP 协议的版本,常见的有 IPv4 和 IPv6。IPv4 的版本值为 4,IPv6 的版本值为 6。
  2. 包头长度(Header Length):占 4 位,以 4 字节为单位,表示 IP 包头的长度。由于 IP 包头中可能包含可选字段,所以首部长度是可变的。通过该字段,接收方可以确定包头的结束位置和数据的开始位置。
  3. 服务类型(Type of Service,ToS):占 8 位,QOS使用。前3位为IP优先级,前6位为DSCP
  4. 报文长度(Total Length):占 16 位,以字节为单位,表示整个 IP 数据包(包括包头和数据部分)的长度。该字段的最大值为 65535 字节,但由于数据链路层对 MTU 的限制,实际传输的数据包长度通常会小于这个值。
  5. 标识符(Identifier):占 16 位,用于唯一标识一个数据包,主要用于数据包的分片和重组。当一个数据包需要被分片传输时,每个分片都会携带相同的标识符,以便接收方能够将它们正确地重组为原始数据包。
  6. 标志位(Flags):占 3 位,用于控制数据包的分片和指示数据包的状态。其中,第一位为保留位,必须设置为 0;第二位为不分片位(DF),如果设置为 1,表示该数据包不允许被分片;第三位为更多分片位(MF),如果设置为 1,表示该数据包还有更多的分片未传输。
  7. 分段偏移量(Fragment Offset):占 13 位,以 8 字节为单位,表示该分片在原始数据包中的偏移量。通过片偏移字段,接收方可以确定各个分片在原始数据包中的位置,从而正确地进行重组。
  8. 生存时间(Time to Live,TTL):占 8 位,用于指定数据包在网络中的生存时间。每经过一个路由器,TTL 的值就会减 1,当 TTL 的值减为 0 时,数据包将被丢弃。TTL 的作用是防止数据包在网络中无限循环,确保网络的稳定性。
  9. 协议(Protocol):占 8 位,用于标识上层协议,如 TCP(值为 6)、UDP(值为 17)、ICMP(值为 1)等。通过协议字段,接收方可以知道将数据包交给哪个上层协议进行处理。
  10. 包头校验和(Header Checksum):占 16 位,用于校验 IP 包头的完整性。计算校验和时,只对 IP 包头进行计算,不包括数据部分。发送方在发送数据包前,会根据 IP 包头的内容计算出一个校验和,并将其填入首部校验和字段;接收方在收到数据包后,会重新计算校验和,并与首部校验和字段的值进行比较,如果两者不相等,则说明数据包在传输过程中发生了错误。
  11. 源 IP 地址(Source IP Address):占 32 位,用于标识数据包的发送方 IP 地址。
  12. 目的 IP 地址(Destination IP Address):占 32 位,用于标识数据包的接收方 IP 地址。
  13. 可选字段(Options):长度可变,最多可达 40 字节。可选字段用于提供一些额外的功能,如记录路由、时间戳、安全选项等。但由于可选字段会增加 IP 包头的长度和处理复杂度,所以在实际应用中并不常用。
  14. 填充字段(Padding):用于保证 IP 包头的长度是 4 字节的整数倍。当可选字段的长度不是 4 字节的整数倍时,需要在可选字段后面添加填充字段,使 IP 包头的总长度满足 4 字节对齐的要求。

 :标识符--同一ip数据包的各个分片的标识符相同    IP分片只在目标主机上进行重组

三、TCP与UDP

3.1 TCP包头结构

 

  1. 源端口号(Source Port):占 16 位,标识发送端应用程序的端口号,用于区分同一台主机上的不同应用程序。
  2. 目的端口号(Destination Port):占 16 位,标识接收端应用程序的端口号,用于将数据准确交付到目标应用程序。注:0——65536,1024以下为知名端口号
  3. 序号(Sequence Number):占 32 位,用来标识 TCP 发送端发送数据的字节流编号。通过序号,接收端可以正确地将接收到的数据包按顺序组装成完整的数据。
  4. 确认号(Acknowledgment Number):占 32 位,是接收端期望收到的下一个字节的序号。它表示接收端已经成功接收了该序号之前的所有数据,用于实现可靠的数据传输。
  5. 报头长度(Data Offset):占 4 位,指示 TCP 包头的长度,以 4 字节为单位。由于 TCP 包头可能包含选项字段,长度不固定,因此需要这个字段来确定数据部分的起始位置。
  6. 预留(Reserved):占 6 位,保留字段,暂时未使用,通常设置为 0。
  7. 编码位(Control Bits):共 6 位,从左到右分别是 URG、ACK、PSH、RST、SYN、FIN。具体含义如下:
    • URG(紧急指针标志):当 URG = 1 时,表明紧急指针字段有效,通知接收方尽快处理紧急数据。
    • ACK(确认标志):当 ACK = 1 时,确认序号字段才有效。在建立连接后,所有发送的数据包都应将 ACK 置为 1。
    • PSH(推送标志):当 PSH = 1 时,指示接收方应尽快将数据交付给应用程序,而不是等待缓冲区填满。
    • RST(复位标志):当 RST = 1 时,用于重置连接。通常在出现错误或异常情况时,发送 RST 包来终止连接。
    • SYN(同步标志):在建立连接时,SYN = 1 用于同步序号。SYN = 1 且 ACK = 0 表示这是一个连接请求包;SYN = 1 且 ACK = 1 表示这是一个连接确认包。
    • FIN(结束标志):当 FIN = 1 时,表明发送方已完成数据发送,请求关闭连接。
  8. 窗口(Window Size):占 16 位,用于告知发送方接收方的接收窗口大小,即接收方当前能够接收的数据量。发送方根据这个字段来控制发送数据的速度,以避免接收方缓冲区溢出。
  9. 校验和(Checksum):占 16 位,用于检测 TCP 数据包在传输过程中是否发生错误。它是对 TCP 包头和数据部分进行计算得到的一个校验值,接收方通过重新计算校验和来验证数据的完整性。TCP报头和数据的校验和
  10. 紧急指针(Urgent Pointer):占 16 位,当 URG 标志位为 1 时,紧急指针字段有效。它指向紧急数据的最后一个字节的序号,用于在紧急情况下快速定位紧急数据的范围。
  11. 选项(Options):长度可变,通常为 0 - 40 字节。常见的选项包括最大段大小(MSS)、窗口扩大因子、时间戳等。选项字段用于在 TCP 连接建立过程中协商一些参数,或者提供一些额外的功能。
  12. 填充(Padding):由于选项字段的长度不一定是 4 字节的整数倍,为了保证 TCP 包头的长度是 4 字节的整数倍,可能需要添加填充字节,使整个包头长度满足要求。

3.2TCP连接建立——三次握手

客户端向服务器发送 SYN 包(第一次握手) SYN=1, Seq=x

服务器响应 SYN+ACK 包(第二次握手)      SYN=1, ACK=1, Seq=y, Ack=x+1 

客户端发送 ACK 包完成握手(第三次握手)  ACK=1, Seq=x+1, Ack=y+1

3.3TCP连接断开——四次断开

客户端向服务器发送 FIN 包(第一次挥手)   FIN=1, Seq=u

服务器响应 ACK 包(第二次挥手)                ACK=1, Seq=v, Ack=u+1

服务器向客户端发送 FIN 包(第三次挥手)   FIN=1, ACK=1, Seq=v, Ack=u+1

客户端响应 ACK 包(第四次挥手)                 ACK=1, Seq=u+1, Ack=v+1

3.4 UDP包头结构

四、上层协议标识

4.1常见IP协议号

协议IP协议号协议IP协议号
ICMP1RSVP46
IGMP2GRE47
IP in IP4ESP50
TCP6AH51
IGRP9EIGRP88
UDP17OSPF89
IPv6 in IP41VRRP112

4.2常见TCP端口号

应用TCP 端口号应用TCP 端口号
FTP - Data20BGP179
FTP21HTTPS443
SSH22RTSP554
Telnet23SOL Server1433
SMTP25Oracle1521
Tacacs+49H3231720
HTTP80PPTP1723
POP3110MMS1755
文件共享139、445远程桌面3389

4.3常见UDP端口号

应用UDP 端口号应用UDP 端口号
WINS42NetBIOS137、138、139
DNS53IPSec NAT - T500、4500
DHCP(bootps)67Syslog514
DHCP(bootpc)68RIP520
TFTP69L2TP1701
NTP123Radius1812、1813
SNMP161、162Radius cisco1645、1646
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值