前情提要:根据域名建立tcp链接之前要做两件事情,1 根据arp协议找到网管mac地址 2 通过dns服务器解析出域名的Ip地址,解析出域名的Ip地址之后就可以建立tcp链接了。
tcp协议三个特点:1 实现可高传输 2 实现流量控制 3 避免网络拥塞
tcp首部:
序号:表示传输数据第一个字节 是整个数据中的第几个字节
确认号:表示下一个链接过来的传输数据的第一个字节 是整个数据中的第几个字节
URG:值为1时表示数据不用进入TCP缓存池排队,直接发送给接收端
ACK:表示确认号码是否有效,0无效 1有效
SYN:值为1时表示发起会话请求的标识,其他为0后者不传(一般用于tcp握手阶段)
PSH:值为1时表示接收端要提前提交给应用程序,不要进入TCP缓存池
RST: 值为1时表示终端链接
RST:值为1时表示释放链接
TCP三次握手
为什么要进行三次握手?
理论上2次握手已经可以判断网络是通畅的,但是为什么还要进行第三次呢?主要是为了解决当第一握手时,如果出现网络延迟时,客户端一段时间没有收到服务器的响应 就会再发一次握手信息,此时服务器会给客户端一个响应。后面客户端一次发送的握手信息,又传送到服务器,此时服务器会在给客户端一个响应,此时客户端就不会在处理这个响应,如果没有第三次握手,服务器还在等待着客户端传输数据,会很浪费服务器资源。
TCP四次挥手
tcp 链接图