我是靠谱客的博主 美满冥王星,最近开发中收集的这篇文章主要介绍网络编程套接字之一【网络协议+OSI+TCP/IP+封装和复用】1. 网络协议2. OSI七层模型和TCP/IP五层模型3. 封装和复用,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

目录

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 协议簇。

3. 封装和复用

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

主机A的发送过程:

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

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

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

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

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

2)传输层

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

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

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

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

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

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

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

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

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

3)网络层

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

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

4)数据链路层

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

 接下来数据链路层,就把这个数据继续往下传给物理层了

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

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

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

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

6)物理层(接收方)

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

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

7)数据链路层

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

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

8)网络层

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

 9)传输层

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

 10)应用层

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

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

最后

以上就是美满冥王星为你收集整理的网络编程套接字之一【网络协议+OSI+TCP/IP+封装和复用】1. 网络协议2. OSI七层模型和TCP/IP五层模型3. 封装和复用的全部内容,希望文章能够帮你解决网络编程套接字之一【网络协议+OSI+TCP/IP+封装和复用】1. 网络协议2. OSI七层模型和TCP/IP五层模型3. 封装和复用所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部