Http的报文结构
- 一个HTTP请求报文由请求行、请求头部、空行和请求数据4个部分组成
- HTTP响应也由三个部分组成,分别是:状态行、消息报头、响应正文。
TCP与UDP的区别
- TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
- TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保 证可靠交付
- TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的
- 每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
- TCP首部开销20字节;UDP的首部开销小,只有8个字节
- TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道
TCP/IP四层模型与OSI七层模型的对应关系
- 七层有底向上分别是:物理层、数据链路层、网络层、传输层、会话层、表示层、应用层。
- 简化后的四层分别是:主机到网络层(比特)、网络层(数据帧)、传输层(数据包)、应用层(数据段)。
- tcp、udp属于传输层
- HTTP属于应用层
解释一下tcp三次握手四次挥手
- tcp三次握手
所谓三次握手,是指建立一个TCP连接时,需要客户端和服务器总共发送3个包。
- 第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等待服务器B确认。
- 第二次握手:服务器B收到SYN包,必须确认客户A的SYN(ACK=j+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器B进入SYN_RECV状态。
- 第三次握手:客户端A收到服务器B的SYN+ACK包,向服务器B发送确认包ACK(ACK=k+1),此包发送完毕,客户端A和服务器B进入ESTABLISHED状态,完成三次握手
- TCP 四次挥手
tcp的连接的拆除需要发送四个包,因此称为四次挥手。客户端或服务器均可主动发起挥手动作
- TCP客户端发送一个FIN,用来关闭客户到服务器的数据传送
- 服务器收到这个FIN,它发回一个ACK,确认序号为收到的序号加1。和SYN一样,一个FIN将占用一个序号。
- 服务器关闭客户端的连接,发送一个FIN给客户端。
- 客户端发回ACK报文确认,并将确认序号设置为收到序号加1