scoket
语义scoket就是一个结构体,里面存储有资源的位置:TCP四元组的数据、IO缓存队列、文件描述符(使得应用程序可以读取IO文件里的内容)。
关键点客户端中的内核scoket,会维护发送和接受两个缓存队列。发送队列的数据来自于浏览器程序,接受队列的数据来自于服务器程序。
关键点服务端中的内核scoket,也会维护发送和接受两个缓存队列。发送队列的数据来自于服务器程序,接受队列的数据来自于浏览器程序。
关键点说到底不管应用程序还是服务器程序,读取的IO数据都来自于内核中的scoket管理的缓存队列。
关键点建立scoket意思就是内核开辟的IO资源,资源的标识符就是四元组。资源并不是无限的,首先内核可以分配的端口号就是65535个。
- 启动服务器,监听端口号。
客户端连接到陈前的阿里云服务器。
//通过nc软件建立TCP连接
nc 101.132.105.76 80
GET / HTTP/1.1
服务器端:浏览器并不是建立了一个TCP连接,而是多个TCP连接到服务器的80端口。每个连接都有缓存队列,内核从服务器接受到数据,放到发送的缓存队列里。
关键点客户端最多可以同服务器建立66535个scoket,内核可以开辟65535个IO资源。
端口号
语义由通信协议分配,用于找到接受IO数据的进程。