• TCP/IP协议


    当前互联网通信使用的是TCP/IP协议,该协议没有严格按照OSI参考模型的分层来设计,而是进行了合并,把计算机通信分为了4层。

    其中应用层包含了7层模型中的应用层、表示层和会话层。将数据链路层和应用层合并为网络接口层。

    大家看TCP/IP协议栈中的协议,协议栈是指网络中各层协议的总和。我们通常说计算机通信使用TCP/IP协议,并不是我们的计算机通信只使用两个协议,而是指的一组协议。

    1.通信协议

    网络中的计算机在进行通信时,必须使用通信协议。

    通信协议是指通信的各方事先约定的通信规则,网络如果没有统一的通信协议,计算机之间的信息就无法传递。

    协议可以理解为给计算机之间进行相互会话所使用的语言规则。

    协议有三要素:语法、语义和同步。语法是数据和控制信息的结构和形式;语义是控制信息的含义;同步规定了信息交流的次数。

    比如传输层使用TCP/IP协议进行可靠传输,需要先建立TCP连接,再传输数据,传输结束后,要释放连接。应用协议通信,对所执行的命令也有顺序要求,比如使用POP3协议收邮件,必须先验证邮箱账户和密码,再接受邮件。

    举个例子,比如寄快递,快递单子就是协议,在什么位置填写什么内容则是语法,其中的某一项代表的意思就是语义。

    2.TCP/IP通信过程

    下面以5层结构给大家讲解浏览器访问web服务器的过程。如图所示,web服务器的IP地址为10.0.0.2,网卡的MAC地址是MA,浏览器的IP地址是10.0.1.2,MAC地址是MF,路由器的接口相当于网卡,也有MAC地址和IP地址。

    (1)、应用层

    浏览器向web服务器发送访问网页的请求,web服务器向浏览器发送网页,这属于高层对话。

    web服务器和浏览器是对等实体,浏览器和web服务器之间通信使用应用层协议http,该协议定义了访问网站有那些方法以及网站响应报文有哪些状态。

    (2)、传输层

    网页在传输之前放到缓存,将数据分段后加上传输层首部,传输层首部的格式以及每个字段是为了实现传输层功能,比如可靠传输、流量控制、拥赛避免。

    传输层首部格式和每个字段代表什么后面博客会详细讲解。传输层首部一个重要的功能就是给这些数据编号。

    浏览器的传输层将收到的数据放到缓存,它能够看懂传输层添加的首部,因此,web服务器的传输层和浏览器的传输层是对等的实体。

    传输层首部的各个字段以及各个字段数值代表的含义就是传输层使用的协议。

    添加了传输层首部的TCP协议的数据单元称为数据段(Segments)。而UDP协议的数据单元称为数据报(Datagrams)。

    (3)、网络层

     数据段要想通过网络发送到浏览器,必须给数据段添加源IP地址和目标IP地址以及网络层控制信息,也就是网络层首部。

    网络层首部的格式和每个字段是为了实现网络层功能,以便网络中的路由器依据网络层首部为数据选择路径。

    因此浏览器的网络层以及网络中沿途经过的路由器必须能够理解web服务区再网络层添加首部的格式以及每个字段所代表的含义,因此web服务器的网络层、沿途经过的路由器以及浏览器的网络层都是对等的实体。

    它们的共同的语言就是网络层的首部,网络层首部就是网络层使用的协议。

    加了网络层首部的数据段就是数据包(Packets)。

    (4)、数据链路层

    数据包想要在网络中传输,就要针对不同的的网络进行不同的封装,也就是封装成不同格式的帧。

    使用见集线器组建的网络就是以太网,连接在集线器的计算机使用CSMA/CD协议进行通信。

    连接在集线器上的设备都有物理地址(MAC地址),计算机的网卡和路由器的接口也都有MAC地址。

    数据包从服务器发送到浏览器·,需要先转给路由器(RouterA)。在数据链路层添加数据链路层首部,其中包括源MAC地址MA、目标MAC地址MB。

    加了数据链路层首部的数据包,我们称之为帧(Frame)。

    服务器网卡和路由器RouterA以太网接口是数据链路层的对等实体。

    数据包需要从路由器RouterA转发到RouterB,C和D的链路是点到点的链路。

    这样的链路上没有其它设备,发送数据帧就不需要添加物理层地址,而是使用PPP协议,因此数据包从C到D需要重新封装成PPP协议的帧格式。

    使用十六进制FF代表地址,其实该地址形同虚设,既不代表源地址也不代表目标地址,接口C和D是数据链路层的对等实体。

    路由器RouterC的以太网接口和浏览器网卡是数据链路层的对等实体。

    可以看到数据包在传输过程中不变,数据链路层会根据不同网络封装成不同的帧格式。

    现在我们可以很清楚知道为什么计算机通信需要物理地址和IP地址,物理地址决定了数据帧吓一跳给谁,而IP地址决定了数据包最终给谁。

    (5)、物理层

    服务器将数据包封装成帧后,网卡将数字信号转化为电信号传送到网线,称为比特(Bit)。

    服务器网卡和RouterA的以太网接口同时也是物理层的对等实体,电压标准和接口标准必须一致。

    路由器RouterA的C接口和路由器RouterB的D接口同时也是物理层的对等实体,广域网线路接口标准和电压标准必须一致。

    3.网络设备和分层

    参照OSI参考模型将计算机通信划分的层,再根据网络设备在计算机通信过程的作用,我们就可以知道不同的网络设备工作在不同的层。

    路由器根据网络层首部信息,为数据包选择转发路由,我们就称路由器为网络设备或三层设备。

    交换机根据数据链路层地址转发数据帧,我们就称其为数据链路层设备,即二层设备。

    集线器只负责传递数字信号,但看不懂帧的任何内容,因此我们称集线器为物理层设备。

    如图所示:

    A计算机给B计算机发送数据,A计算机的应用程序准备要发送数据,传输层负责可靠传输,添加传输层首部,添加传输层首部之后,称为段。

    为了让数据段发送到目的计算机B,需要添加网络层首部,添加网络层首部之后,称为包。

    为了让数据包经过集线器发送给路由器,需要添加以太网数据链路层首部,添加以太网首部之后,称之为以太网帧。

    这个过程就是封装。网卡负责将数据包封装成帧以及将数据帧变成Bit流。因为网卡工作在物理层和数据链路层

    集线器只是将电信号传递到全部接口,它和网线一样,看到的只是Bit流,分不清传递的电信号那些是数据链路层首部,那些是网络层首部,也不关心传递过程有没有错误。因此我们称集线器为物理层设备。

    路由器的接口收到Bit流,判断数据帧的目标MAC地址是否和自己的MAC地址一样,如果一样就去掉数据链路层首部提交给路由器;

    路由器收到数据包后,根据网络层首部的IP地址选择路径,重新封装成帧发送出去;

    路由器根据数据包网络层首部转发数据包,因此我们称路由器为三层设备。

    路由器有物理层和数据链路层的功能么?肯定是有的,要不然如何接收数字信号,如何判断帧是否是给自己的呢?只不过路由器的接口工作在物理层和数据链路层。

    交换机的接口收到Bit流,存储数据帧,然后根据数据链路层首部封装的目标MAC地址转发数据帧,交换机能看懂数据链路层封装,并工作在数据链路层,我们称交换机为二层设备。

    交换机看不到网络层首部,更看不到传输层首部。

    数据帧到了接收端的计算机,会去掉收据链路层首部、网络层首部、传输层首部,最终组装成一个完整的文件,这个过程叫做解封。

  • 相关阅读:
    构建自己的yara数据库
    Java反序列化漏洞研究
    我喜欢的资源
    jvm-垃圾收集
    jvm-内存
    java设计模式--行为模式
    java设计模式--结构型模式
    java设计模式--简介
    netty之 -- 手写rpc框架
    netty之---核心源码剖析
  • 原文地址:https://www.cnblogs.com/yangmingxianshen/p/7787281.html
Copyright © 2020-2023  润新知