TCP/IP 协议簇的逐层封装
2005-09-22 00:01
162 查看
在使用 TCP 协议的网络程序中,用户数据从产生到从网卡发出去一般要经过如下的逐层封装过程:
![](/images/blog_csdn_net/eric119/encap_tcp_ip.gif)
从下往上看:
1)链路层通过加固定长度的首部、尾部来封装 IP 数据报(Datagram) 产生以太网帧(Frame),其中首部存在对封装数据的标识:是 IP(0x0800,本例) 、ARP(0x0806) 还是 RARP(0x0835)。
2)网络层通过加首部来封装 TCP 段(Segment) 产生 IP 数据报,其中首部存在对封装数据的标识:是 ICMP(0x01)、IGMP(0x02)、TCP(0x06,本例) 还是 UDP(0x11)。
3)传输层通过加首部来封装应用数据产生 TCP 段,其中首部存在对封装数据的标识:端口号,来标识是那个应用程序产生的数据。
4)按这种处理逻辑,在应用层,对于我们要处理的应用数据理所当然的加上固定长度的首部,首部中同样含有某些标识,标识些什么呢?按经验,一般会标识本次数据的业务意义,在程序中一般处理为业务集合(枚举型)的某个元素;如果是 TCP应用(本例) 还可能包括应用数据总体长度。
![](/images/blog_csdn_net/eric119/encap_tcp_ip.gif)
从下往上看:
1)链路层通过加固定长度的首部、尾部来封装 IP 数据报(Datagram) 产生以太网帧(Frame),其中首部存在对封装数据的标识:是 IP(0x0800,本例) 、ARP(0x0806) 还是 RARP(0x0835)。
2)网络层通过加首部来封装 TCP 段(Segment) 产生 IP 数据报,其中首部存在对封装数据的标识:是 ICMP(0x01)、IGMP(0x02)、TCP(0x06,本例) 还是 UDP(0x11)。
3)传输层通过加首部来封装应用数据产生 TCP 段,其中首部存在对封装数据的标识:端口号,来标识是那个应用程序产生的数据。
4)按这种处理逻辑,在应用层,对于我们要处理的应用数据理所当然的加上固定长度的首部,首部中同样含有某些标识,标识些什么呢?按经验,一般会标识本次数据的业务意义,在程序中一般处理为业务集合(枚举型)的某个元素;如果是 TCP应用(本例) 还可能包括应用数据总体长度。
相关文章推荐
- TCP/IP 协议簇的逐层封装
- linux网络编程之TCP/IP基础(一):TCP/IP协议栈与数据报封装
- TCP/IP 协议簇学习
- TCP/IP之封装
- linux网络编程之TCP/IP基础(一):TCP/IP协议栈与数据报封装
- TCP/IP 封装-分用
- tcp/ip ---数据封装过程
- TCP_IP详解-包封装
- TCP/IP基础(一)OSI7层模型、TCP4层模型、封装与分用
- linux网络编程之TCP/IP基础(一):TCP/IP协议栈与数据报封装
- 网络数据封装解析(IP,UDP,TCP)
- TCP/IP数据包封装与拆解概述
- TCP/IP 之数据包发送封装流程
- TCP/IP 协议簇分哪几层?TCP、IP、XMPP、HTTP、分别属于哪一层?
- TCP/IP的层次结构以及各层数据封装的过程 (一)
- TCP/IP的层次结构以及各层数据封装的过程
- TCP/IP各协议与封装
- TCP/IP ---封装与分用
- TCP/IP之封装,分用,服务器模型