0
点赞
收藏
分享

微信扫一扫

Socket 套接字-通信方式

一叶随风_c94d 2022-04-19 阅读 69
单元测试

转载自:

网络编程懒人入门(十四):到底什么是Socket?一文即懂!

1、引言

对于即时通讯IM这方面的应用层开发者来说,跟计算机网络打道的其实是各种API接口。

本篇文章就来聊一下网络应用程序员最熟悉的Socket这个东西,抛开生涩的计算机网络理论,从应用层的角度来理解到底什么是Socket。

对于 Socket 的认识,本文将从以下几个方面着手介绍:

  • 1)Socket 是什么;

  • 2)Socket 是如何创建的;

  • 3)Socket 是如何连接的;

  • 4)Socket 是如何收发数据的;

  • 5)Socket 是如何断开连接的;

  • 6)Socket 套接字的删除等。

2、Socket 是什么

首先说明下,socket并非互联网协议,它只是基于互联网协议,连接应用层和传输层之间的套件,翻译为“套接字”,使两层建立联系,便于传输数据,这个套件就是 Socket,可以认为它就是一种通信模式

一个数据包经由(1)应用程序产生,进入到(2)协议栈中进行各种报文头的包装,然后操作系统调用(3)网卡驱动程序指挥硬件,把数据发送到对端主机。

整个过程的大体的图示如下:

我们大家知道,协议栈(互联网协议)其实是位于操作系统中的一些协议的堆叠,这些协议包括 TCP、UDP、ARP、ICMP、IP等。

通常某个协议的设计都是为了解决特定问题的,比如:

  • 1)TCP 的设计就负责安全可靠的传输数据;

  • 2)UDP 设计就是报文小,传输效率高;

  • 3)ARP 的设计是能够通过 IP 地址查询物理(Mac)地址;

  • 4)ICMP 的设计目的是返回错误报文给主机;

  • 5)IP 设计的目的是为了实现大规模主机的互联互通。

应用程序比如浏览器、电子邮件、文件传输服务器等产生的数据,会通过传输层协议进行传输。而应用程序是不会和传输层直接建立联系的,而是有一个能够连接应用层和传输层之间的套件,这个套件就是 Socket

在上面这幅图中,应用程序包含 Socket 和解析器,解析器的作用就是向 DNS 服务器发起查询,查询目标 IP 地址(关于DNS请见《理论联系实际,全方位深入理解DNS》)。

应用程序的下面:就是操作系统内部,操作系统内部包括协议栈(互联网协议),协议栈是一系列协议的堆叠。

操作系统下面:就是网卡驱动程序,网卡驱动程序负责控制网卡硬件,驱动程序驱动网卡硬件完成收发工作。

在操作系统内部有一块用于存放控制信息的存储空间,这块存储空间记录了用于控制通信的控制信息。其实这些控制信息就是 Socket 的实体,或者说存放控制信息的内存空间就是Socket的实体。

举报

相关推荐

0 条评论