分层
如图所示:
PDU
PDU(protocol data unit):协议数据单元。即每一层使用自己层的协议和别的系统的对应层相互通信,协议层的协议在对等层之间交换的信息叫协议数据单元
各层协议数据单元如下;
上层:message
传输层:segment
网络层:packet
数据链路层:frame
物理层:bit
封装
数据要通过网络进行传输,就需要从高层一层一层的向下传送,如果一个主机要传送数据到别的主机,先把数据装到一个特殊协议报头中,封装可以分为切片和加控制信息。
数据进入TCP/IP协议栈时的封装过程如下:
解封装
封装过程的逆过程,数据进入TCP/IP协议栈时的解封装过程如下:
以太帧和常见的报文格式
以太网帧(Ethernet II Frame)
- D-MAC:目的MAC地址
- S-MAC:源MAC地址
- 类型域:表示帧里面上层协议数据的类型,0x0800代表IP协议帧,0x0806代表ARP协议帧
- CRC:帧校验
IP数据报
- 版本号:4代表IPv4,
- 头长度:报头的长度,4位表示的最大值为15,且值为4字节的倍数,故首部长度最大为60字节
- 服务类型:暂未使用
- 总长度:IP数据报的长度(报头区+数据区),单位为字节,故总长度最大为65535字节,但总长度不能超过最大传输单元MTU
- 标识:一个计数器,用来产生数据报的标识
- 标志:占3位,最低位MF,为1表示还有分片,中间为DF,为0,表示允许分片
- 片偏移:较长的分组在分片后,某片在原分组中的相对位置,单位为8字节
- TTL:生存时间,数据报可以经过的最大路由器数
- 上层协议标识:1:ICMP,2:IGMP、6:TCP、17:UDP等;
分片如图所示:
TCP数据报
- 协议、源IP、源端口、目的IP、目的端口确定一个TCP连接
- 顺序号:TCP段所发送的数据部分第一个字节的序号
- 确认号:期望收到对方下次发送的数据的第一个字节的序号
- 头部长度:单位为4字节,因此TCP首部的最大长度为60字节
- 窗口大小:窗口通告值,发送方根据接收方的窗口告值调整窗口大小
- 紧急指针:指示紧急数据在报文段中的结束位置此时URG置位
- URG:表示紧急指针字段有效
- ACK:表示确认号字段有效
- PSH:表示当前报文需要推操作
- RST:置位表示复位TCP连接
- SYN:用于建立TCP连接时同步序列号
- FIN:用于释放TCP连接时标识发送方比特流结束
UDP数据包
常见协议对应的端口号:
UDP DHCP服务器端:67,DHCP客户端:68,DNS服务:53
TCP POP3(邮件接收协议):110,SMTP(邮件传输协议):25,HTTP服务:80
TCP FTP:数据传输为20,控制命令传输为21,Telnet:23
端口号范围为:1~65535,1~1024为熟知端口号,1025~65535称为动态端口
ARP协议
- ARP(Address Resolution Protocol)地址解析协议,是根据 IP 地址获取物理 MAC 地址的一个 TCP/IP 协议。
- ARP 高速缓冲表:用来记录 IP 和 主机 MAC 地址的对应关系。会不断更新。
- 功能:通过目标设备的 IP 地址,查询目标设备的 MAC 地址,同时维护 ARP 高速缓冲表,以保证通信的顺利进行。
ICMP协议
- ICMP 是 “Internet Control Message Protocol”(网络控制报文协议)的缩写,用于在 IP 主机、路由器之间传递控制消息。
- 控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。
- ICMP 层区分不是很明显,一般划分在 IP 层中,通过 IP 包来封装ICMP数据 ,在实际传输中数据包的格式一般都是 IP 包 + ICMP包的格式
ICMP包格式
代码:用来表示ICMP报文类型的少数参数。例如:代码值为0,表示网络不可达;代码值为1,表示主机不可达
DNS协议简介
- DNS(Domain Name System):域名系统,将域名和IP地址相互映射的一个分布式数据库
- 采用Client/Sever工作模式
- DNS 协议运行在 UDP 协议之上,使用端口号 53
过程图解:
DHCP协议简介
- DHCP(Dynamic Host Configuration Protocol):动态主机配置协议
- 采用Client/Sever工作模式
- 为主机提供配置参数、自动分配可重复利用的网络地址
- DHCP 协议运行在 UDP 协议之上,服务器端口号 67,客户端口号68