网络编程套接字之一【网络协议+OSI+TCP/IP+封装和复用】

导读:本篇文章讲解 网络编程套接字之一【网络协议+OSI+TCP/IP+封装和复用】,希望对大家有帮助,欢迎收藏,转发!站点地址:www.bmabk.com

目录

1. 网络协议

2. OSI七层模型和TCP/IP五层模型

3. 封装和复用


1. 网络协议

(1)网络协议是什么?
网络通信是(即网络数据传输)经过的所有网络设备都必须共同遵从 的一组约定、规则。
如怎么样建立连接、怎么样互相识别等。只有遵守这个约定,计算机之间才能相互通信交流。
(2)网络协议的组成是什么?
a)语法:数据与控制信息的结构或格式;
比如打电话时,双方都说普通话
b)语义:需要发出何种控制信息,完成何种动作以及做出何种响应;
比如打电话时说的内容,小王:你在干啥  ;小李:我在吃饭  (主要是说明通信双方应该怎么做)
c)
时序:事件实现顺序的详细说明;
比如很多时候打电话,是男生主动打电话,女生主动要求结束通话(也就是定义何时进行通信,先说什么,再说什么,说话速度等)
协议最终体现为在网络上传输的数据包的格式

(3)网络协议的作用是什么?
比如去相亲,彼此协商去哪个地方见个面,这就是一种提前的约定,也可以称之为协议。
而计算机之间的传输媒介是光信号和电信号,通过“频率”和“强弱”来表示0和1这样的信息,
要想传递各种不同的信息,就需要约定好双方的数据格式。
(4)协议的默认端口
系统端口的号的范围为0~65535,其中:0~1023为知名端口号,这些端口就是预留给服务端程序绑定广泛使用的应用层协议。

2. OSI七层模型和TCP/IP五层模型

协议分层:分层的好处,类似于面向接口编程,定义好两层间的接口规范,让双方遵循这个规范来对接。而网络协议分层就有OSI和TCP/IP

 OSI(Open System Interconnection)七层模型:

a)OSI是一个逻辑上的定义和规范,把网络从逻辑上分为了7层。

b)OSI最主要的功能就是帮助不同类型的主机实现数据传输。

c)优点:将服务、接口和协议这三个概念明确地区分开,通过这七个层次化的结构模型使不同的系统不同的网络之间实现可靠的通讯。

实际上OSI七层模型既复杂又不实用,所以OSI七层模型没有落地、实现。

实际组建网络时,只是以OSI七层模型设计中的部分分层,也就是TCP/IP模型来实现。

TCP/IP模型:

TCP/IP
是一组协议的代名词,它还包括许多协议,组成了
TCP/IP
协议簇。

网络编程套接字之一【网络协议+OSI+TCP/IP+封装和复用】

3. 封装和复用

比如:主机A  通过微信给 主机B 发了个 在吗?

主机A的发送过程:

1) 应用层(微信 应用程序)

微信 程序内部自己约定好了一个应用层协议(这是内部约定,外人无法知晓)

比如给出一个简单的设计方案:

微信 应用程序会把用户输入的字符串构造成约定好的应用层协议的报文

网络编程套接字之一【网络协议+OSI+TCP/IP+封装和复用】

 下一步就是,微信应用程序就会把这个应用数据报,交给传输层协议,进行下一步处理

2)传输层

传输层是操作系统内核实现的,操作系统提供了一些API给应用程序(socket api),在代码里调用系统里的API,就可以把应用层的数据交给传输层(也就是给了操作系统内核)

传输层这里可能有很多协议,其中最常见的就是 TCP协议

TCP协议要在之前数据的基础上,加上个TCP的协议报头

网络编程套接字之一【网络协议+OSI+TCP/IP+封装和复用】

这个过程就可以类比于快递

比如上网买个东西,卖家会将商品套一层包装袋,然后放进快递盒中,最后给快递盒子上套一个快递塑料袋子,这个袋子的作用就是

防止盒子弄脏,还有就是给袋子上贴快递单

这个快递单上就有(发件人姓名,发件人地址,收件人姓名,收件人地址)

前面报头TCP报头中的源端口和目的端口,就相当于发件人姓名和收件人姓名

下一步,传输层就需要继续把这个数据交给网络进行处理(也就是相当于处理快递单上的地址信息)

3)网络层

网络层中最常见的,就是IP协议(前面所说的TCP/IP五层结构,实际上就是把最常见的两个协议给单独拿出来了)

网络编程套接字之一【网络协议+OSI+TCP/IP+封装和复用】

构造好IP数据报之后,IP协议继续把整个数据交给数据链路层

4)数据链路层

数据链路层的协议也有很多,其中最常见的就是“以太网”(电脑上插的网线,也叫做“以太网线”,对应的网线也就是遵守以太网这个协议的),以太网这个协议是既管数据链路层,又管物理层

网络编程套接字之一【网络协议+OSI+TCP/IP+封装和复用】 接下来数据链路层,就把这个数据继续往下传给物理层了

5)物理层(发送方)
前面就是将数据已经组织好了,然后通过物理层的设备(网卡)就把数据的二进制 bit 流,转换为 光信号(光纤) / 电信号(网线),进行传输

上面这五个过程,数据从上到下,底层添加信息的过程,就称为“封装”(相当于“打包快递”)

分用就是封装的逆过程(“相当于“拆快递””)

此时省略中间的传输过程,假设数据已经到达了接收端主机(下面进行 “分用” 的操作)

6)物理层(接收方)

接收方的网卡的硬件设备就收到了 光信号 / 电信号,就把这个信号转成了二进制的 bit 数据

下一步就是,将数据交给数据链路层,由以太网协议负责解析

7)数据链路层

现在已经拿到了以太网的数据帧,由以太网协议,去掉帧头和帧尾,取出载荷部分

网络编程套接字之一【网络协议+OSI+TCP/IP+封装和复用】

把取出的载荷,交给网络层

8)网络层

IP协议针对上面得到的IP数据报再进行解析,去掉IP报头,得到载荷部分,继续交给传输层

网络编程套接字之一【网络协议+OSI+TCP/IP+封装和复用】

 9)传输层

传输层TCP协议根据上面得到的载荷数据进行解析,去掉TCP表头,得到载荷部分,继续交给应用层

网络编程套接字之一【网络协议+OSI+TCP/IP+封装和复用】

 10)应用层

微信应用程序,就会把应用层数据报再进行解析,取出里面的信息显示给接收方的界面上

网络编程套接字之一【网络协议+OSI+TCP/IP+封装和复用】

上面的过程主要是描述了发送方和接收方之间的封装和分用的过程,实际中间还有很多的过程,A 和 B 不是一根网线直连,中间要经过一些交换机 / 路由器 进行转发,实际的过程只会更加的复杂

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/91223.html

(0)
小半的头像小半

相关推荐

极客之音——专业性很强的中文编程技术网站,欢迎收藏到浏览器,订阅我们!