发送和接受tcp数据包c语言windows_学习TCP/IP协议之前,你应该先理解OSI开放式互联参考模型,功倍...

当前市面上存在4层,5层,7层协议,而国际标准化组织ISO置顶的OSI七层协议模型是业界提出来的概念型框架,因此我们先来了解一下开放系统互联参考模型及OSI七层协议。分为1物理层、2数据链路层、3网络层、4传输层、5会话层、6表示层、7应用层。那么我们自底而上讲解一下。

bd010d1d0e67271cbc6248e9cec6d7d2.png

物理层:

我们要解决两台物理机的通信需求,具体就是机器A往机器B发送byte流,机器B接收到byte流。这便是物理层要做的事情。物理层主要定义了物理设备的标准,如网线的类型,光纤的接口类型,各种介质的传输速率等。它的主要作用是传输比特流,即我们的0101二进制数据。将它们转化为电流强弱进行传输,到达目的地后再转化为0101的机器码。也是我们常说的数模转换与模数转换。这一层的数据叫做比特,那网卡就是工作在这一层的。

数据链路层:

在传输比特流的过程中,会产生错传,数据传输不完整的可能,因此数据链路层应运而生。数据链路层定义了如何格式化数据以进行传输,以及控制如何对物理介质的访问,这一层通常还提供错误检测和纠正,以确保数据传输的可靠性。本层将比特数据组成了成帧,其中交换机工作在这一层里面,对帧解码,并根据帧中包含的信息,把数据发送到正确的接收方。

网络层:

那随着网络节点的不断增加,点对点通讯的时候,需要经过多个节点,那么如何找到目标节点,如何选择最佳路径,便成为了首要需求,此时便有了网络层。其主要功能主要是将网络地址翻译成对应的物理地址,并决定如何将数据由发送方路由到接受方。网络层通过综合考虑发送优先权,网络拥塞程度,服务质量,以及可选路由的花费来决定从一个网络中节点A到另一个网络节点B的最佳路径。由于网络层处理并智能指导数据传送,路由器连接网络隔断,所以路由器属于网络层。此层的数据我们称之为数据包。本层我们需要关注的协议主要有TCP/IP协议里面的IP协议。

传输层:

随着网络通信通信需求的进一步扩大,通讯过程中需要发送大量的数据,如海量文件传输等,可能需要很长时间,而网络在通信的过程中,会中断好多次。此时为了保证传输大量文件的准确性,需要对发出去的数据进行切分,切割层一个一个的段落,即segment进行发送。那么其中一个段落丢失了该怎么办?要不要重传?每个段落要按照顺序到达吗?这个便是传输层需要考虑的问题。传输层解决了主机间的数据传输,数据的传输可以是不同网络的。并且传输层解决了传输的质量问题。该层是OSI模型中最重要的一层。传输协议同时进行流量控制,或者基于可接受接收数据的快慢程度,规定适当的发送速率。除此之外,传输层按照网络能处理的最大尺寸,把较长的数据包进行强制分割,例如以太坊无法接受大于1500字节的数据包。发送方节点的传输层将数据分割成较小的数据片,同时将每一个数据片安排一个序列号,以便数据到达接收方节点的传输层时,能以正确的顺序重组,该过程称为排序。传输层需要我们关注的协议有TCP/IP协议中的TCP协议和UDP协议。

会话层:

现在我们保证给正确的计算机发送正确的封装过后的信息了,但是用户级别的体验好不好呢?难道我每次都要调用TCP去打包,然后调用IP协议去找路由,自己去发。当然不行,所以我们要建立一个自动收发包,自动寻址的功能,于是发明了会话层。会话层的作用就是建立和管理应用之间的通信。

表示层:

现在我能保证应用程序自动收发包和寻址了。但是我们要用linux给windows发包,两个系统语法不一致。就像安装包一样,exe是不能在Linux上执行的。shell在Windows下也是不能直接运行的。于是需要表示层。当我们解决不同系统之间的通讯语法的问题。在表示层,数据将按照网络能理解的方案进行格式化。这种格式化也因网络的不同而不同。

应用层:

虽然发送方知道自己发送的是什么东西,转换层字节数组之后有多长,但接收方肯定不知道。所以应用层的网络协议诞生了。它规定发送方和接收方,必须使用一个固定长度的消息头,消息头必须使用某种固定的组成,而且消息头必须记录消息体的长度等一系列信息。方便接受方能正确的解析发送方发送的数据。应用层旨在让你更方便的应用从网络中接受到的数据。至于数据的传递,没有该层你也可以在两台主机间传输。只不过传来传去就是一堆1和0组成的字节数组。该层需要重点关注的是与之相对应的TCP/IP协议中的Http协议。

c1e6cddff309aaf5a8cb54b902060c7a.png

OSI是一个定义良好的协议规范集,并有许多可选部分完成类似的任务,它定义了开放系统的层次结构,层次之间的相互关系,以及各层包括的可能的任务,是作为一个框架来协调组织各层所提供的服务。但是OSI参考模型,不没有提供一个可实现的方法,而是描述了一些概念,用来协调进程间通讯标准的制定,即OSI参考模型并不是一个标准。而是在制定标准所使用的概念型框架。事实的标准是TCP/IP四层架构参考模型。

4b34e60a70cb15394054b5b52fefafb4.png
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值