美文网首页
使用电信号传输TCP/IP:创建套接字

使用电信号传输TCP/IP:创建套接字

作者: robot_test_boy | 来源:发表于2022-07-02 00:12 被阅读0次

    在数据收发中扮演关键角色的套接字,在协议栈内部有一块用于存放控制信息的内存空间,这里记录了用于控制通信操作的控制信息,如通信对象的IP地址、端口号、通信操作的进行状态等。

    协议栈在执行操作时需要参阅这些控制信息。在发送数据时,需要看一看套接字中的通信对象IP地址和端口号,以便向指定的IP地址和端口发送数据。在发送数据后,协议栈需要等待对方返回收到数据的响应信息,但数据也可能在中途丢失,永远也等不到对方的响应。在这样的情况下,我们不能一直等下去,需要在等待一定时间之后重新发送丢失的数据,这就需要协议栈能够知道执行发送数据操作后过了多长时间。为此,套接字中必须要记录是否已经收到响应,以及发送数据后经过了多长时间,才能根据这些信息按照需要执行重发操作。

    套接字中记录了用于控制通信操作的各种控制信息,协议栈则需要根据这些信息判断下一步的行动,这就是套接字的作用。协议栈根据套接字中记录的控制信息来工作的

    当创建套接字时,会增加一行新的控制信息,赋予“即将开始通信”的状态,并进行通信的准备工作,如分配用于临时存放收发数据的缓冲区空间。

    其中本地IP地址和远程IP地址都是0.0.0.0,这表示通信还没开始,IP地址不确定。

    首先是创建套接字的阶段。应用程序调用socket申请创建套接字,协议栈根据应用程序的申请执行创建套接字的操作。

    该过程中,协议栈首先会分配用于存放一个套接字所需的内存空间,用于记录套接字控制信息。

    套接字刚刚创建时,数据收发操作还没有开始,因此需要在套接字的内存空间中写入表示这一初始状态的控制信息。

    接下来,需要将表示这个套接字的描述符告知应用程序。描述符相当于用来区分协议栈中的多个套接字的号码牌。

    收到描述符之后,应用程序在向协议栈进行收发数据委托时就需要提供这个描述符。

    由于套接字中记录了通信双方的信息以及通信处于怎样的状态,所以只要通过描述符确定了相应的套接字,协议栈就能够获取所有的相关信息,这样一来,应用程序就不需要每次都告诉协议栈应该和谁进行通信了。


    创建套接字时,首先分配一个套接字所需的内存空间,然后向其中写入初始状态。


    本文摘取自周自恒翻译的户根勤编写的《网络是怎样连接的》。

    相关文章

      网友评论

          本文标题:使用电信号传输TCP/IP:创建套接字

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