• 计算机网络中的一些基本概念


    ip地址IP地址是ip协议提供的一种统一的地址格式,它为互联网上的每一个网络和每一台主机分配一个逻辑地址,以此来屏蔽物理地址的差异是用来区分主机的

    端口号:每个应用程序对应一个端口号,通过类似门牌号的端口号,客户端才能真正的访问到该服务器。为了对端口进行区分,将每个端口进行了编号,这就是端口号.是用来区分同一主机上的不同程序的。

    协议:协议是一种约定,是通信双方对于通信规则的约定。

    注:协议和标准还是有差别的,标准往往是一个认可面非常广的“国家标准”。协议,则不一定,可以是认可面非常广,也可以是认可面不广的。

    协议分层:网络通信是一个非常复杂的事情,这个过程中涉及到很多的细节问题。如果只使用一个协议来约定上述所有的细节,这个协议就会非常庞大,复杂。此时,就可以把一个功能复杂的协议,拆分成多个功能更单一的协议了。这些协议要进行分类(分层)。按照不同的功能分成不同的层级,每个层级都有对应的主线任务,上层协议会调用下层协议的功能,下层协议会给上层协议提供服务。(不能“越级调用”)

    分层通常有两种:1)OSI七层模型(仅存在于课本上,客观世界中不存在)

    2)TCP/IP五层(也可说四层,除去物理层)模型

    可以认为是OSI的简化版本,是真实世界采取的网络分层模型。

    封装:应用层数据通过协议栈发到网络上时,每层协议都要加上一个数据首部(header),称为封装。首部信息中包含了一些类似于首部有多长,载荷有多长,上层协议是什么等信息。数据封装成帧后发到传输介质上,到达目的主机后每层协议再剥掉相应地首部,根据首部中的“上层协议字段”将数据交给对应的上层协议处理。

    以下为数据封装过程:

    以下为数据分用过程:

    两台主机之间的网络通信流程:

    1)应用层

    应用层会将要传递的内容,组织成“应用层数据包”。将要传输的发送人,接收人,消息时间,消息内容组织到一个字符串中,不同的应用层协议数据组织的格式是不相同的。本身要发送的是一个结构化的数据(包含很多属性,字段),把结构化的转化成字符串的过程,称为“序列化”。把字符串转化成结构化数据的过程称为“反序列化”。

    2)传输层

    传输层(操作系统内核)提供了api(称为socket api)。让应用程序去调用。应用层接下来要把数据交给传输层,传输层拿到应用层数据包之后,就会把这个数据包进行进一步的封装,添加一个报头,构造成传输层数据包,在传输层有两个典型协议TCP和UDP,此处假设使用UDP。

    传输层构造好数据包之后,就会继续把数据包交给网络层。

    3)网络层

    网络层又继续给数据包添加ip报头,ip报头里包含收件人的ip地址和发件人的ip地址。构成ip数据包。

    接下来调用数据链路层的api,把ip数据包交给数据链路层的协议。

    4)数据链路层

    数据链路层的典型协议是以太网,以太网也有自己的数据包格式,就会拿到上述ip数据包,进一步的封装。

    至此数据已经进入到网卡驱动中了,接下来就要真正发送出去了。

    5)物理层

    上述的以太网数据帧,本质上还是0101二进制数据。硬件设备要把上述二进制数据转成光信号/电信号/电磁波,才会真正进行发射。

    上述层层包装数据,不停的加数据报头的过程,称为“封装”。


    注:服务端:在常⻅的⽹络数据传输场景下,把提供服务的⼀⽅进程,称为服务端,可以提供对外服务。

    客⼾端:获取服务的⼀⽅进程,称为客⼾端。


    当数据经由交换机/路由器一系列转发之后,最终到达客户端。

    客户端所做的就是将上述过程反过来。

    上述过程称为“分用”。

    注:在纸面,“路由器”工作在网络层。“交换机”工作在数据链路层。而在真实情况下,现在的路由器和交换机功能越来越多,有些交换机的功能,路由器也有,所以界限就没那么分明了。


    请求和响应:

    ⼀般来说,获取⼀个⽹络资源,涉及到两次⽹络数据传输:

    • 第⼀次:请求数据的发送

    • 第⼆次:响应数据的发送。

    好⽐在快餐店点⼀份炒饭: 先要发起请求:点⼀份炒饭,再有快餐店提供的对应响应:提供⼀份炒饭

    以上,关于网络的基本概念,希望对你有所帮助。

  • 相关阅读:
    URL定义
    C语言——三子棋游戏
    ubuntu的键盘F1~F12没有反应/出现问题(被系统强制为功能键了)
    【python学习】--执行时间计算方法以及优化
    Java8流Stream的创建和操作
    二本土木工程管理毕业5年,零基础转型大数据开发,收割长沙深圳多个大数据offer...
    使用HandlerInterceptor 中注入其他service时为null分析及解决
    【Qt】之【项目】整理可参考学习的git项目链接(持续更新)
    UsernameAuthenticationFilter授权成功后调用AuthenticationSuccessHandler时的解析
    LyScript 内存交换与差异对比
  • 原文地址:https://blog.csdn.net/m0_73629312/article/details/138011351