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

2021-08-28  本文已影响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}{警: 禁止抄袭,转载说明出处 🤨}

上一篇下一篇

猜你喜欢

热点阅读