前言
目录
二、连接过程
四、补充
一、描述
二、连接过程
1、服务器监听:
- 是指服务端套接字并不定位具体的客户端套接字,而是出于等待连接的状态,实时监控网络状态;
- 服务端会创建一个可用的套接字,用到domain, type, protocol;
- 调用bind函数把套接字和套接字地址绑定;
- 其中有一个listen函数,初始化创建的套接字,可以认为是一个“主动”套接字;
- 连接建立之后,操作系统内核和应用程序之间的桥梁会用到accept函数。
2、客户端请求:
- 是由客户端的套接字提出连接请求,要连接的目标是服务端套接字;
- 会用到connect函数完成,需要用到的参数有:连接套接字、套接字地址结构的指针、套接字地址结构的大小。
3、连接确认:
- 是当服务器端套接字监听到或者说接收到客户端套接字的连接请求时;
- 它就相应客户端套接字的请求,建立一个新的线程;
- 把服务端套接字的信息发送给客户端;
- 一旦客户端确认此连接,连接即可建立。
四、补充
其中出错返回可能有以下几种情况:
- 客户端发出的SYN没有任何响应,返回TIMEOUT错误:常见于对应的服务端IP写错。
- 客户端收到RST回答,这时客户端立即返回ConNECTION REFUSED错误:常见于客户端发送链接请求时的请求端口写错。
- 客户端发出的SYN包在网络上引起“destination unreachable”,即目的不可达:常见于客户端和服务器之间路由不通。
