数据结构

Untitled

在linux中一切皆为文件,内核的socket也是一个文件,文件有个句柄fd,说白了就是文件的身份证号码,通过它可以知道是哪个Sock

<aside> 💡

文件句柄:sock_fd = socket(AF_INET, SOCK_STREAM, IPPROTO_TCP)

</aside>

socket_fd是一个**int类型的数字,**中文翻译为:”套接字“,一套用于连接的文字。

sock最基础的结构,可以按照不同的协议派生出不同的功能的sock

不同的sock的功能

Untitled

建立连接

代码执行socket提供的connect(sockfd, "ip:port")方法时,会通过sockfd句柄找到对应的文件,再根据文件里的信息指向内核的sock结构。通过这个sock结构主动发起三次握手。

<aside> 💡 在服务端握手次数还没达到"三次"的连接,叫半连接,完成好三次握手的连接,叫全连接。它们分别会用半连接队列全连接队列来存放。

</aside>

**关于全连接和半连接**

数据传输

sock结构体里带了一个发送缓冲区和一个接收缓冲区。