七层网络模型
重点:TCP/UDP——传输层、IP——网络层、HTTP——应用层、socket——会话层**
一、TCP/IP(传输层) “三次握手” “四次挥手”
TCP/IP将七层网络模型归类到四个抽象层:应用层、传输层、网络层、数据链路层
TCP(Transmission Control Protocol,传输控制协议)是一种面向连接的、可靠的、基于字节流的通信协议,数据在传输前要建立连接,传输完毕后还要断开连接,客户端在收发数据前要使用connect()函数和服务器建立连接。建立连接的目的是保证IP地址、端口、物理链路等正确无误,为数据的传输开辟通道。
1.1Tcp数据报结构:
Seq:(sequence Number)序号占32位,用来标识从计算机A发送到计算机B的数据包的序号,计算机发送数据时对此进行标记。
Ack:(Acknowledge Number)确认号占32位,客户端和服务端都可以发送,Ack=Seq+1.
标志位:每个标志位占用1bit,共有6个,分别为URG、ACK、PSH、RST、SYN、FIN
URG:紧急标志位。 ACK:确认标志位。 PSH:传送标志位。
RST:重置标志位。 SYN:同步标志位。 FIN:断开标志位。
1.2连接的建立(三次握手):
套接字A:“你好 套接字B 我这里有数据要传输给你,与我建立连接吧。”
套接字B:“好的 套接字A 我已收到你的请求 我这边已经准备就绪。”
套接字A:“好的 谢谢你受理我的请求。”
TCP建立连接时要传输三个数据包,俗称“三次握手”(Three-way Handshaking)。
TCP/IP协议中,TCP协议通过三次握手建立一个可靠的连接
第一次握手:客户端尝试连接服务器,向服务器发送SYN报文,并指明客户端的初始化序列号SYN(c),客户端进入SYN_SEND状态等待服务器确认。
第二次握手:服务器接收客户端SYN报文之后,同时向客户端发送一个SYN报文作为应答,并且指出服务器的初始化系列号SYN(s)