OSI网络分层
- 应用层
http, smtp,pop3这些都属于应用层协议
为用户的应用程序提供服务
- 表示层
确保一个系统的应用层发送的信息被另一个系统的应用层接收到
- 会话层
通过传输层建立数据传输的通道
- 传输层
定义了传输协议和网络端口(www和80端口)
- 网络层
为处于不同地理位置的两台主机提供链接和路径选择
- 数据链路层
定义如何让格式化数据进行传输,以及如何让控制对物理介质的访问
- 物理层
物理设备标准,网线接口、光纤接口
TCP/IP协议
- 应用层(OSI中的应用层、表示层、会话层)
应用层面向不同的网络应用引入不同的网络协议,有基于TCP的,例如文件传输(FTP)、虚拟终端协议(TELNET)、超文本链接协议(HTTP),同样也有基于UDP协议的,例如域名解析服务(DNS)。
- 传输层
传输层的功能是使源端主机和目标端主机可以进行对等的会话。定义了两种协议1、传输控制协议(TCP)2.用户数据报协议(UDP)
- 网络互连层
定义了分组和互联协议,即IP协议
- 主机到网络层(OSI中的数据链路层、物理层)
何为IP协议
用于将多个包交换网络连接起来的,它在源地址和目的地址之间传输一种称为数据包的东西,它还能提供将数据大小的重新组装功能,以适应不同网络对包大小的要求
何为TCP协议
TCP协议最核心的就是三次握手过程,断开连接的四次分手过程
三次握手协议
- 客户端发送一个随机序列码(1000),发起连接,并等待服务端相应
- 服务端收到客户端请求后,发送自己初始序列码(1234),并将客户端的随机序列码加一后(1001)发还给客户端
- 客户端接收到服务端响应后,将服务端的初始序列码加一(1235)后,作为最终应答发还给服务端,此时链接建立成功
四次挥手协议
首先,挥手协议无论客户端还是服务端,均可主动发起
主动方、被动方由发起close命令来区分,并非严格规定挥手是由客户端还是服务端发起
- 主动方发起一个挥手,发送一个FIN,然后关闭主动方与被动方的数据传输,进入FIN_WAIT状态
- 被动方接收到到主动方发送的FIN后,发送一个ACK相应给主动方,此时被动方进入CLOSE_WAIT状态
- 被动方发送一个FIN给主动方,用于关闭被动方与主动方的数据传输,此时进入LAST_ACK状态
- 主动方收到FIN后,进入TIME_WAIT状态,接着发送一个ACK确认给被动方,然后进入CLOSE状态,完成四次挥手
一次完整的http请求是如何实现的
- 首先浏览器和服务端建立TCP的三次握手协议
- 浏览器向服务器发送一个命令,http://www.baidu.com,并且发送完成一个再发送一个空白行告知服务端发送信息结束
- 客户端发送完毕以后,服务端会向客户端会送应答,一般就是我们在header头中常见的状态码,例如200,404,500等
- 然后服务端根据客户端的请求地址相应具体的文档或相应结果
- 当服务端相应完结果后,会按照约定的conten-type,向客户端把信息发送过来
- 当服务端把信息发送给客户端后,原则上会将tcp请求关闭。若是connection若是设置为keep-alive(长链接的时候都是开启的)。这样的话tcp会始终保持