美文网首页
网络-套接字究竟是什么?

网络-套接字究竟是什么?

作者: 南土酱 | 来源:发表于2021-08-28 21:27 被阅读0次

    本系列文章都是从 黑皮书-计算机网络自顶向下方法-阅读查找的

    我们Java开发,python,go开发等等,网络编程都会用到一个名词术语,叫做套接字
    套接字究竟是什么? 这本书把它归结到了 应用层-网络模型 里边。
    在说套接字之前,先说说应用程序之间的通信。

    进程通信:

    网络五层模型-物理层-链路层-网络层-运输层-应用层
    应用程序之间的通信,其实是进程进行的通信。一款软件多个进程,之间使用通信机制互相通信。但是本篇我们说的是 不同系统,不同主机之间的通信

    1.客户和服务器进程

    熟悉的有浏览器进程与一台web服务器进程交换报文。(一对通信进程)
    或者一个p2p文件共享系统中,文件从一方的进程传输到另一个进程。(一对通信进程)

    2.进程与计算机网络之间的接口

    多数应用程序是由通信进程对组成的,每对中的两个进程互相发送报文。但是我们知道五层协议了,一个报文要怎么发送呢?
    这个报文会从应用层出发,经过运输层-网络层-,层层封装,最后发送到对方进程里。那么应用层要怎么接受和发送这个报文? 通过套接字就对了
    套接字是建立网络应用程序的可编程接口,套接字称为 应用程序和网络之间的应用程序编程接口(application Programming Interface ,API) ,开发人员开发应用程序时,程序与网络通信的功能模块通过这个 编程接口去实现。(例如websocket通信,websocket底层是http协议,http是应用层协议,报文如何从应用层到运输层呢?就是套接字这个接口)
    套接字是同一台主机内应用层与运输层之间的接口。如图所示


    1.jpg

    其实网络协议-应用层和运输层都不是我们开发人员关注的,开发人员只关注代码本身。开发人员只是利用套接字控制应用层网络的开发(写ajax代码发送 http请求数据。http是封装于tcp之上的),和一点运输层的权限::(①选择运输层协议②可能可以设定某个参数,如最大缓存和最大报文段长度)

    其实那么多废话:无非就是 应用层与运输层之间传输报文由套接字处理。开发人员希望程序在应用层能与网络通信,就使用套接字提供的接口去编写代码。开发者可以控制套接字在应用层端的一切。但是运输层基本不可能。
    这也是为什么有url发送http 请求,而不是自己发送一个tcp请求

    \color{#228B22}{网络学习小总结,不对之处,欢迎大神们喷我。可以的话顺手点个赞吧~~!}
    \color{red}{警: 禁止抄袭,转载说明出处 🤨}

    相关文章

      网友评论

          本文标题:网络-套接字究竟是什么?

          本文链接:https://www.haomeiwen.com/subject/obqiiltx.html