我想知道网络数据包如何穿越不同的层,即从物理层到 Linux 系统中的表示层。
有没有关于这个主题的详细文章或书籍以及代码?
答案1
OSI 层模型并不是实际的网络编程方式。如果您对 C 代码示例感兴趣,可以查看这本书:
答案2
不便宜,但绝对是经典之作。Richard Stevens:“TCP/IP Illustrated Vol.1 The Protocols”。非常详尽,当然也涵盖了 UDP、ICMP 等。第 156 页。
如果您喜欢编程,还有 Gary Wright 撰写的“TCP/IP 图解第 2 卷实施”。
答案3
7 Application
6 Presentation
5 Session
4 Transport
3 Network
2 Data
1 Physical
TCP / IP combines certain layers
7-5 Application
4 Transport
3 Internetwork
2-1 Network Access
从概念上讲,OSI 模型如下所示
7 Application---- ------------- Application
6 Presentation--- ------------- Presentation
5 Session-------- ------------- Session
4 Transport------ ------------- Transport
3 Network-------- ---Network--- Network
2 Data----------- ---Data------ Data
1 Physical------- ---Physical-- Physical
每个发送层似乎都与相应的接收层透明通信。在路由网络中(中间一列),情况也是如此。
当数据包从 7 下降到 1 时,每一层都会附加报头信息,而下一层会将其视为协议数据单元。当数据包上升到模型时,每一层都会删除报头。