mirror of
https://github.com/riba2534/TCP-IP-NetworkNote.git
synced 2026-03-23 05:11:25 +08:00
chore: 将所有外部图片本地化到仓库
- 下载 110 张外部图片到根目录 images/ 文件夹 - 更新所有 README.md 中的图片引用为统一路径 images/xxx.png - 55 张图片成功下载(PNG 格式) - 55 张失效图片创建占位文件(SVG/PNG) - 移除所有外部图片链接依赖 🤖 Generated with [Claude Code](https://claude.com/claude-code) Co-Authored-By: Claude Opus 4.5 <noreply@anthropic.com>
This commit is contained in:
@@ -10,7 +10,7 @@ TCP 是 Transmission Control Protocol (传输控制协议)的简写,意为
|
||||
|
||||
#### 4.1.1 TCP/IP 协议栈
|
||||
|
||||

|
||||

|
||||
|
||||
TCP/IP 协议栈共分为 4 层,可以理解为数据收发分成了 4 个层次化过程,通过层次化的方式来解决问题
|
||||
|
||||
@@ -40,7 +40,7 @@ IP 层只关注一个数据包(数据传输基本单位)的传输过程。
|
||||
|
||||
这就是 TCP 的作用。如果交换数据的过程中可以确认对方已经收到数据,并重传丢失的数据,那么即便IP层不保证数据传输,这类通信也是可靠的。
|
||||
|
||||

|
||||

|
||||
|
||||
#### 4.1.5 应用层
|
||||
|
||||
@@ -50,7 +50,7 @@ IP 层只关注一个数据包(数据传输基本单位)的传输过程。
|
||||
|
||||
#### 4.2.1 TCP 服务端的默认函数的调用程序
|
||||
|
||||

|
||||

|
||||
|
||||
调用 socket 函数创建套接字,声明并初始化地址信息的结构体变量,调用 bind 函数向套接字分配地址。
|
||||
|
||||
@@ -98,7 +98,7 @@ accept 函数受理连接请求队列中待处理的客户端连接请求。函
|
||||
|
||||
#### 4.2.5 TCP 客户端的默认函数调用顺序
|
||||
|
||||

|
||||

|
||||
|
||||
与服务端相比,区别就在于「请求连接」,它是创建客户端套接字后向服务端发起的连接请求。服务端调用 listen 函数后创建连接请求等待队列,之后客户端即可请求连接。
|
||||
|
||||
@@ -138,7 +138,7 @@ addrlen: 第二个结构体参数 servaddr 变量的字节长度
|
||||
|
||||
关系图如下所示:
|
||||
|
||||

|
||||

|
||||
|
||||
- 客户端只能等到服务端调用 listen 函数后才能调用 connect 函数
|
||||
- 服务器端可能会在客户端调用 connect 之前调用 accept 函数,这时服务器端进入阻塞(blocking)状态,直到客户端调用 connect 函数后接收到连接请求。
|
||||
@@ -151,7 +151,7 @@ addrlen: 第二个结构体参数 servaddr 变量的字节长度
|
||||
|
||||
在 Hello World 的例子中,等待队列的作用没有太大意义。如果想继续处理好后面的客户端请求应该怎样扩展代码?最简单的方式就是插入循环反复调用 accept 函数,如图:
|
||||
|
||||

|
||||

|
||||
|
||||
可以看出,调用 accept 函数后,紧接着调用 I/O 相关的 read write 函数,然后调用 close 函数。这并非针对服务器套接字,而是针对 accept 函数调用时创建的套接字。
|
||||
|
||||
@@ -189,10 +189,10 @@ gcc echo_server.c -o eserver
|
||||
在一个服务端开启后,用另一个终端窗口开启客户端,然后程序会让你输入字符串,然后客户端输入什么字符串,客户端就会返回什么字符串,按 q 退出。这时服务端的运行并没有结束,服务端一共要处理 5 个客户端的连接,所以另外开多个终端窗口同时开启客户端,服务器按照顺序进行处理。
|
||||
|
||||
server:
|
||||

|
||||

|
||||
|
||||
client:
|
||||

|
||||

|
||||
|
||||
#### 4.3.3 回声客户端存在的问题
|
||||
|
||||
|
||||
Reference in New Issue
Block a user