2022-12-17 TCP/IP 协议栈_2


前言

既然要学习计算机网络编程, 就不得不提计网祖师爷 W· Richard Stevens, 天妒英才, 先生于1999年就早早陨落. 不知多少人凭着先生所著 “TCP/IP详解” 以及 “UNIX网络编程” 吃的盆满钵满. 而至今可说还未有能超越先生的著作.

但经典的问题是难读, 不是说书写的晦涩, 而是人们普遍对大部头有畏难情绪, 没有耐心读完. 没办法, 那就选择二手粮食吧.

当然, 我仍然鼓励有志者去读经典, 我们身边充斥的二手解读不是不能用, 而是不成体系, 失了精髓.


一、TCP/IP协议栈四层协议系统

之所以称 TCP/IP 协议栈, 是因为这里边不止是 TCP 协议和 IP 协议, 单这俩协议支撑不起网络. 它是一个四层的协议体系:

数据链路层: 底层网卡接口驱动, 属于硬件部分. 最终所有的逻辑都要转换称物理信号进行传递.

网络层: 实现数据包的选路和转发, 其主要任务是选择合适的路由器节点, 确定主机之间的通信路径. 网络层主要包括 IP 协议和 ICMP 协议.

传输层: 忽略中间传递过程, 负责两台通讯主机的端到端通信. 其实就是一层层封装, 使操作者不必关心传输的具体细节, 只关心传输接收到的信息. 传输层主要包括 TCP协议, UDP协议, SCTP协议(不做介绍).

应用层: 负责处理应用程序的逻辑. 这一层,才是我们最终用到的程序逻辑执行, 处理接收到的信息, 发出处理完成后需要对方应答的信息, 以及其它附加的逻辑.

你可以认为整个协议栈就是为完成一个网络 IO, 普通的 IO 是从自己的硬盘, 终端等输入, 再通过程序逻辑输出到终端, 或存储到硬盘, 而 TCP/IP协议栈就是扩展到整个互联网都是你的硬盘, 都是你的终端.

TCP/IP四层结构
应用层主要包括的是用户的程序, 所有利用传输层及以下层协议的程序都属于应用层.

如图所见, 传输层以下都属于内核空间, 意思是都是属于操作系统层的实现, 是操作系统固有的设施, 用户不得干预.

而应用层则是用户空间, 即用户可以自己把握的部分也就是如何处理这些传过来的数据.

而连接用户空间及内核空间的就是 socket 接口.

二、封装和分用

所谓封装, 就是将信息一层层包裹,

程序数据包裹到TCP/UDP,

TCP报文段/UDP数据报包裹到 IP,

IP数据报包裹至以太网帧,

然后通过物理途径发送出去. 所以, 以太网帧才是最终在物理网络中传送的字节序列.
封装

所谓分用则是以太网帧达到目的主机, 然后逐层剥离封装, 将应用程序数据传递给应用程序的过程.

分用
封装剥离的方法是根据封装层头部的类型 / 协议 / 端口号, 将剥离层的数据转发给相应的处理协议 / 程序进行处理.

当信息通过互联网传递, 通过封装和分用的作用, 让程序可以忽略层层处理, 直接使用数据.


总结

TCP/IP协议栈的内容是十分复杂的, 但并不难以理解.

我们将网络协议分为四层, 信息的传递是通过发送端四层协议的层层封装,成为可物理传递的以太网帧发送, 以及接收端通过四层协议的层层剥离, 将以太网帧还原为应用程序信息.

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

不停感叹的老林_<C 语言编程核心突破>

不打赏的人, 看完也学不会.

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值