加载中……
网络协议栈基础

分层

如图所示:

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

参考链接

网络协议栈基本知识

版权声明: 若无特殊说明,文章均为原创,版权归本文作者所有,转载请保留出处和此说明!
本文链接: 网络协议栈基础
本文作者: Jan.
暂无评论

发送评论 编辑评论


				
|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇