OSI七层模型:应用层、表现层、会话层、运输层、网络层、数据链路层、物理层
HTTP协议是Hyper Text Transfer Protocol(超文本传输协议)的缩写,是用于从万维网(WWW:World Wide Web )服务器传输超文本到本地浏览器的传送协议。
TCP/IP协议族包括IP\TCP、UDP、FTP、HTTP、DNS等
TCP/IP协议族的四层:应用层、传输层、网络层、链路层
层名 | 作用 | 示例 |
---|---|---|
应用层 | 该层面向用户,决定了向用户提供应用服务时的通信活动 | http(超文本传输协议),ftp(文件传输协议),dns(域名系统) |
传输层 | 应用层会将数据交付给传输层进行传输 | tcp(传输控制协议),udp(用户数据协议) |
网络层 | 处理在网络上流动的数据包,负责在众多网络线路中选择一个传输线路,而且这需要ip和mac地址的支持 | ip(网络协议) |
链路层 | 该层主要是处理网络的硬件部分 | nic(network interface controller)网卡 |
三握手过程:
位码即tcp标志位,有6种标示:SYN(synchronous建立联机) ACK(acknowledgement 确认) PSH(push传送) FIN(finish结束) RST(reset重置) URG(urgent紧急)Sequence number(顺序号码) Acknowledge number(确认号码)
示意图如下:
1.第一次握手:发送端发送一个带SYN(Synchronize)标志的数据包给接收 端,用于询问接收端是否可以接收。如果可以,就进行第二次手
2. 第二次握手:接收端回传给发送端一SYN/ACK(Acknowledgement)的数据包,给发送端说,我收到你给我发送的SYN标志了,我再给你传一个ACK标志,你能收到吗?如果发送端收到了SYN/ACK这个数据包,就可以确认接收端收到了之前发送的SYN, 然后进行第三次握手。
3.第三次握手:发送端会给接收端发送一个带有ACK标志的数据包,告诉接收端我可以收到你给我发送的SYN/ACK标志。接收端如果收到了这个来自客户端的ACK标志,就意味着三次握手完成,连接建立,就可以开始传输数据了
四次挥手过程:
1.某进程先调用close()函数,该端TCP发送FIN(fin = i),表示数据发送完毕,需要关闭连接,称为主动关闭。
2.接收到FIN的服务器端执行被动关闭。进行确认(ACK , ack = i+1),在该进程接收的其他所有数据之后添加文件结束符(end-of-file)。
3.一段时间之后(虽然服务器接收被动关闭命令,但它不能立即关闭,因为服务器端还有其他数据处理),接收到文件结束符的进程调用close()函数关闭套接字,这导致它的TCP也发送FIN(fin = j)。
4.主动关闭连接的一端确认(ACK , ack = j+1)最后发送的FIN。
重点:为什么建立连接需要三次握手,而断开连接需要四次挥手?
建立、断开连接都需要两次请求与确认,只是建立连接时SYN、ACK可以同时发回;而在断开连接时,由于被动关闭的一端可能还会发送数据,只有数据发完后才能发送ACK,所以只能分开发送,也就造成了建立连接为三次(建立连接时由于握手期间连接未完全建立,故不能发送其他数据),断开连接反而成了四次。