TCP网络连接的详细过程
套接字对唯一标识一个网络上的每个TCP连接。
一个TCP连接的套接字对是定义该连接的两个端点的四元组:本地IP地址本地端口号(唯一标识一个进程,网络通信其实两台机器数两个进程之间的通信)和外地IP地址外地端口号。
连接的整个过程。
1.在主机上启动服务器
服务器是多宿主机
12.106.32.254
192.168.42.1
此时服务器有一个监听套接字
{*:21,*:*}
服务器在他众所周知的端口21上执行被动打开,从而开始等待客户的请求。
如果运行服务器的主机是多宿的,服务器可以指定它只接受到达某个特定本地接口的外来连接,要么选一个接口要么接任意接口
2.IP为206.168.112.219的主机启动第一个客户
206.168.112.219 客户ip
客户
{206.168.112.219:1500,
12.106.32.254:21}
12.106.32.254 服务器多宿,他的IP
192.168.42.1
服务器
{*:21,*:*}
客户发送到服务器21端口号的连接
3.服务器接收并接受这个客户的连接,它fork一个自身的副本,让子进程处理该客户的连接。
206.168.112.219
客户
{206.168.112.219:1500,
12.106.254.21}
12.106.32.254
192.168.42.1
服务器进程的套接字对
{*:21, *:*}
服务器子进程的套结字对
{12.168.32.254:21,
206.168.112.219:1500}
在多宿主机上,连接一旦建立,已连接套结字的本地IP地址随即写入。
4.如果有同一客户机上两个客户请求同时和一个服务器连接则连接成功时套结字的状态如下
客户
206.168.112.219
客户1{206.168.112.219:1500,
206.168.112.219:1501,
12.206.32.254:21}
客户2{206.168.112.219:1501,
12.206.32.254.21}
服务器进程
{*:21,*:*}
服务器子进程1
{12.206.32.254:21,
206.168.112.219:1500}
服务器子进程1
{12.206.32.254.21,
206.168.112.219:1501}