一、TCP的连接建立
- TCP建立连接的过程叫做握手
- 握手需要在客户端和服务器之间交换三个TCP报文段,称之为三报文握手
- 采用三报文握手主要是为了防止已失效的连接请求报文段突然又传送到了,产生错误
确认ACK,只有当ACK=1时,确认号字段才有效。当ACK=0时,确认号无效。
二、TCP的连接释放
- 数据传输结束后,通信的双方都可释放连接
- TCP连接释放过程是四报文挥手
数据传输结束后,通信的双方都可释放连接。
- A的应用进程先向其TCP发出连接释放报文段,并停止发送数据,主动关闭TCP连接。
- A把连接释放报文段首部的 FIN=1,其序列号seq = u,等待B的确认。
- B发出确认,确认号ack = u + 1,而这个报文段自己的序号seq = v。
- B的TCP服务器进程通知高层应用进程。
- 第二步之后,从A到B这个方向的连接就释放了,TCP连接处于半关闭状态。B若发送数据,A仍要接收。
- 若B已经没有要向A发送的数据,其应用进程就通知TCP释放连接,发送FIN=1
- 在确认报文段中,ACK=1,确认号ack = w+1,自己的序列号seq = u+1。
三、浏览器输入一个网址(www.baidu.com)后执行的全过程
事件顺序:
(1)浏览器获取输入的域名www.baidu.com
(2)浏览器向DNS服务器请求解析域名对应的ip地址
(3)域名系统dns解析出百度服务器的ip地址;发起TCP的三次握手
(4)浏览器与该服务器建立TCP连接(默认端口80)
(5)浏览器发出http请求,请求百度首页
(6)服务器通过http响应把首页文件数据发送给浏览器
(7)TCP连接释放(四次挥手)
(8)浏览器将首页文件进行解析,并将web页面显示给用户