协议那些事(二)

网络分层的原因

程序执行是复杂的 为使程序执行简单化 设计时会将程序分层处理 使其每一层界限清晰 专注与处理某一类的事情 明确每一层的职责 也就帮我们将一个庞大复杂的问题分成了许多小问题 实现复杂问题简单化

程序是如何工作的

我们知道 程序是可以跑在电脑上、服务器上、交换机上、路由器上的 通常程序的处理 就是从某个网络端口获取一个网络包 经过程序处理一下 再从另一个网口发出 具体流程参照下图

图中函数名只是假设
图中四层设备的TCP头 可以确认这个包是一个请求 还是应答 还是仅仅是个数据包
如果是发起或应答 则一般需要发送一个回复包
如果是数据包 则需要交由上层--应用去处理 交给哪个应用呢? TCP头里包含端口 监听这个端口的应用 就是我们数据包需要交付的应用 假设浏览器监听 则将包发给浏览器处理 后续浏览器怎么处理 第一个包的处理已不再关注这些

总结: 网络上的包都是完整的 可以有下层没上层 但不能有上层没下层--对于TCP协议来说 无论是三次握手 还是重试 发出的包都包含IP和MAC层 不然发不出去

包有IP【外网IP】为什么还一定要有MAC地址呢?

  • 因为局域网内IP是随机分配的 不唯一 但是MAC地址对于每台主机是唯一的
posted @ 2021-01-06 16:08  C余L小R鱼  阅读(59)  评论(0编辑  收藏  举报