
Socket 编程(下):服务器如何提高并发量
Web 请求一般都是 HTTP 请求,而 HTTP 协议又是基于 TCP 的,所以,我们主要探讨如何让服务器同时处理更多 TCP 连接请求。
Web 请求一般都是 HTTP 请求,而 HTTP 协议又是基于 TCP 的,所以,我们主要探讨如何让服务器同时处理更多 TCP 连接请求。
位于应用层的应用程序在基于 TCP 协议或 UDP 协议进行通信时,需要用到操作系统提供的类库,这种类库一般称为 API(Application Programming Interface,应用编程接口)。
在建立 TCP 连接的同时,也可以确定发送数据包的单位,我们可以将其称为「最大消息长度」(MSS,Maximum Segment Size),最理想的情况下,最大消息长度正好是 IP 中不会被分片处理的最大数据长度。
TCP 提供面向有连接的通信传输,面向有连接是指在数据通信开始之前先做好通信两端之间的准备工作。 TCP 的连接建立,我们常常称为三次握手。三次握手的目的是为了确保对连接双方来说,链路都是通的。 三次握手除了双方建立连接外,主要还是为了沟通一件事情,就是 TCP 包序列号的问题。每个连接都要有不同的序列号,这个序列号的起始序号是随着时间变化的。
TCP 协议提供的是面向连接的可靠性传输,比 UDP 协议要复杂很多。
UDP 的全称是 User Datagram Protocol,中文名是用户数据报协议。 UDP 提供面向无连接的通信服务,是不具有可靠性的数据报协议。
传输层主要有两个协议:TCP 协议和 UDP 协议。TCP 提供面向连接的可靠性传输,UDP 则提供面向无连接的非可靠性传输。