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

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

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

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

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

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

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

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

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

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

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

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

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

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


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


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

相关文章

  • how networks work second note

    思维导图 用电信号传输TCP/IP数据--探索协议栈和网卡 问题总结 看点 创建套接字 套接字的实体就是通信控制信...

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

    在数据收发中扮演关键角色的套接字,在协议栈内部有一块用于存放控制信息的内存空间,这里记录了用于控制通信操作的控制信...

  • Python基础语法-3

    socket套接字使用流程:1.创建套接字2.使用套接字收/发数据3.关闭套接字 创建一个TCP socket 创...

  • TCP/IP异步模型 心得

    转载引用 TCP/IP异步模型 Server 服务端基本流程创建套接字绑定套接字的IP和端口号——Bind()/C...

  • 网络编程之TCP套接字编程

    TCP套接字服务端 创建一个TCP流式套接字 绑定服务端地址(本机的IP和端口号) 设置监听套接字 等待处理客户端...

  • 用socket和多进程配合多线程实现简单的tcp的聊天服务器

    python中的socket套接字用于实现网络通信tcp套接字的使用流程如下: 创建套接字对象 --- cli...

  • python核心编程第三版

    第二章-网络编程 socket() 嵌套字创建tcp/ip套接字tcpsock - socket.socket(s...

  • socket常识

    socket也叫 套接字 socket是一套API 是对TCP/IP协议的封装,为了便于使用TCP/IP协议的,这...

  • iOS Socket

    Socket(套接字)是通讯协议.通过IP地址,和端口号进行锁定传输数据.Socket支持TCP/UDP协议,一个...

  • 进程相关(四)--进程间通信(套接字)

    套接字 什么是套接字 TCP用主机的IP地址加上主机上的端口号作为TCP连接的端点,这种端点就叫做套接字(sock...

网友评论

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

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