方法(操作) | 意义 |
---|---|
OPTION | 请求一些选项的信息 |
GET | 请求读取由 URL所标志的信息 |
HEAD | 请求读取由 URL所标志的信息的首部 |
POST | 给服务器添加信息(例如,注释) |
PUT | 在指明的 URL下存储一个文档 |
DELETE | 删除指明的 URL所标志的资源 |
TRACE | 用来进行环回测试的请求报文 |
CONNECT | 用于代理服务器 |
状态码 | 含义 |
---|---|
1xx | 通知信息,如请求收到了或正在进行处理。 |
2xx | 成功,如接受或知道了。 |
3xx | 重定向,表示要完成请求还必须采取进一步的行动。 |
4xx | 客户的差错,如请求中有错误的语法或不能完成。 |
5xx | 服务器的差错,如服务器失效无法完成请求。 |
现需访问www.baidu.com,具体流程如下:
www.baidu.com
的IP地址为220.181.38.149
,通过IP找到服务器路径。客户端发起HTTP会话到220.181.38.149
,然后交给传输层TCP | UDP | |
---|---|---|
是否连接 | 面向连接 | 无连接 |
传输类型 | 面向字节流 | 面向报文 |
可靠性 | 可靠 | 不可靠 |
连接数 | 仅一对一 | 一对一、一对多、多对一、多对多 |
开销 | 大 | 小 |
拥塞控制 | 有 | 无 |
首先,B的TCP服务器进程进入监听状态,准备接收客户端请求
数据传输结束后,通信的双方都可释放连接。
A数据传输完毕需要断开连接,A的应用进程向其TCP发出连接释放报文段(FIN = 1,序号seq = u),并停止再发送数据,主动关闭TCP连接,进入FIN-WAIT-1状态,等待B的确认。 TCP规定,FIN报文段即使不携带数据,它也消耗掉一个序号。
B收到连接释放报文段后即发出确认报文段(ACK=1,确认号ack=u+1,序号seq=v),B进入CLOSE-WAIT关闭等待状态,此时的TCP处于半关闭状态,A到B的连接释放。而A收到B的确认后,进入FIN-WAIT-2状态,等待B发出的连接释放报文段。也就是说,从B到A这个方向的连接并未关闭,这个状态可能会持续一段时间。
A收到来自B的确认后,就进入FIN-WAIT-2 (终止等待2)状态,等待B发出的连接A收到来自B的确认后,就进入FIN-WAIT-2 (终止等待2)状态,等待B发出的连接
若B已经没有要向A发送的数据,其应用进程就通知TCP释放连接。这时B发出的连接释放报文段必须使FIN= 1。现假定B的序号为w (在半关闭状态B可能又发送了一些数据)。B还必须重复上次已发送过的确认号ack=u+1。这时B就进入LAST-ACK (最后确认)状态,等待A的确认。
A收到B的连接释放报文段后,对此发出确认报文段(ACK = 1,seq=u+1,ack=w+1),A进入TIME-WAIT(时间等待)状态。此时TCP未释放掉,需要经过时间等待计时器设置的时间2MSL后,A才进入CLOSE状态
为什么A在TIME-WAIT状态必须等待2MSL(最大报文生存时间)的时间?
1.保证A发送的最后一个ACK报文段能够到达B,保证A、B正常进入CLOSED状态。
2.防止“已经失效的连接请求报文段”出现在本连接中。
原文:https://www.cnblogs.com/shimeath/p/13405103.html