一、OSI七层网络模型
1、应用层:访问网络的服务接口
2、表示层:数据格式转换和表示
3、会话层:建立连接并访问验证和会话管理
4、传输层:定义了传输数据的协议和端口号
5、网络层:IP地址的封装和解析
6、数据链路层:MAC地址解析和封装
7、物理层:定义物理设备标准
二、TCP四层模型
1、应用层:服务及应用层序
2、传输层:确认数据传输及错误处理
3、网络层:服务数据的传输、路由及地址的选择
4、网络接口层:定义物理网络连接的协议
三、TCP三次握手
TCP建立链接时要进行三次握手
1、客户端发送SYN(seq=x)报文给服务器端,进入SYN_SEND状态
2、服务器端收到SYN报文,回应一个SYN(seq=y)和ACK(ack=x+1)报文,进入SYN_RECV状态
3、客户端收到服务器端的SYN报文,回应一个ACK(ack=y+1)报文,进入Established状态。
四、TCP四次挥手
TCP断开链接时要进行四次挥手
1、客户端应用进程调用断开连接的请求,向服务器端发送一个终止标志位FIN=1,seq=u的消息,表示在客户端关闭链路前要发送的数据已经发送完毕,可以开始关闭链路操作,并请求服务器端确认关闭客户端到服务器的链路操作。此时客户端处于FIN、WAIT-1状态。
2、服务器在收到这个FIN消息后返回一个ACK=1,ack=u+1,seq=v的消息给客户端,表示接收到客户端断开链路的操作请求,这时TCP服务器端进程通知高层高层应用进程释放客户端到服务器端的链路,服务器处于CLOSE-WAIT状态,即半关闭状态。客户端在收到消息后处于FIN-WAIT-2状态。
3、服务器端在关闭链路前将需要发送给客户端的消息发送给客户端,等待该数据完成后,发送一个终止标志位FIN=1,ACK=1,seq=w,ack=u+1的消息给客户端,表示关闭链路前服务器需要向客户端发送的消息已经发送完毕,请求客户端确认关闭从服务器到客户端的链路操作,此时服务器端处于LAST-ACK状态,等待客户端最终断开链路。
4、客户端在接收到这个最终FIN消息后,发送一个ACK=1,seq=u+1,ack=w+1的消息给服务器端,表示接收到服务器端的断开连接请求并准备断开服务器端到客户端的链路。此时客户端处于TIM-WAIT状态,TCP连接还没有释放,然后经过等待计时器(2MSL)设置的超时时间后,客户端将进入CLOSE状态。
五、HTTP中的常见状态码
状态码 | 原因短语 |
---|---|
100 | Continue(继续) |
101 | Switching Protocol(切换协议) |
200 | OK(成功) |
201 | Created(已创建) |
202 | Accepted(已创建) |
203 | Non-Authoritative Information(未授权信息) |
204 | No Content(无内容) |
205 | Reset Content(重置内容) |
206 | Partial Content(部分内容) |
300 | Multiple Choice(多种选择) |
301 | Moved Permanently(永久移动) |
302 | Found(临时移动) |
303 | See Other(查看其他位置) |
304 | Not Modified(未修改) |
305 | Use Proxy(使用代理) |
306 | unused(未使用) |
307 | Temporary Redirect(临时重定向) |
308 | Permanent Redirect(永久重定向) |
400 | Bad Request (错误请求) |
401 | Unauthorized(未授权) |
402 | Payment Required(需要付款) |
403 | Forbidden(禁止访问) |
404 | Not Found(未找到) |
405 | Method Not Allowed(不允许使用该方法) |
406 | Not Acceptable(无法接收) |
407 | Proxy Authentication Required(要求代理身份验证) |
408 | Request Timeout(请求超时) |
409 | Conflict(冲突) |
410 | Gone(已失效) |
411 | Length Required(需要内容的长度) |
412 | Precondition Failed(预处理失败) |
413 | Request Entity Too Large(请求实体过长) |
414 | Request-URI Too Long(请求网址过长) |
415 | Unsupported Media Type(媒体类型不支持) |
416 | Requested Range Not Satisfiable(请求范围不合要求) |
417 | Expectation Failed(预期结果失败) |
500 | Internal Server Error(内部服务器错误) |
501 | Implemented(未实现) |
502 | Bad Gateway(网关错误) |
503 | Service Unavailable(服务不可用) |
504 | Gateway Timeout(网关超时) |
505 | HTTP Version Not Supported(HTTP版本不受支持) |