内核态-用户态
TCP:
传输控制层的协议,面向连接的,可靠的;
连接:不是物理的,是逻辑的。三次握手只是过程,中间可能走的通道有好多种,但双方有资源为对方提供服务,这个资源建立起来了才叫连接
三次握手:
整个过程都是双方的内核在沟通
1.C->S:
发送 syn; syn是状态描述,我想建立连接
2.S->C:
回复 syn+ack; ack就是告诉客户端,确认了
3.C->S:
再发送 ack;告诉服务器端,我也知道了。
三次握手后会在内存中开辟资源。
问题1:两次握手行不行?
答:通信是双向的,服务器端不光要知道自己能够接收,也要确认客户端是否能收到自己发出的包; 确认机制
四次挥手:
SOCKET:
套接字 : 有四个维度,客户端的ip+port : 对应服务器端的 ip+port
ip的目的是找到主机,端口号是找到程序(具体哪个进程)
端口号:操作系统最多分配65535个
套接字在互联网中唯一表示了两个程序的通信
题目:假设客户端的ip是A,服务端的ip是s,请问客户端的进程C最多可以建立多少个连接?
解答: 最多建立65535个连接;因为每个连接是唯一的,一般服务端的监听端口号是80,一直死循环去监听。所以唯一能变得就是IPA后面得port数,一共65535
再问:假设IPA和IPS:80已经建立了65535个连接了,现在有另一个服务器S2,还能否和IPA建立连接?
答:能!因为IP变了
再再问:有一个物理服务器,想对另一个服务器做压力测试,怎么办?
答:设置虚拟IP,让物理服务器得ip不断得改变,这时socket就可以有很多