重新认识网络通信协议

2019/04/20 09:58
阅读数 68

OSI网络分层

  1. 应用层

http, smtp,pop3这些都属于应用层协议

为用户的应用程序提供服务

  1. 表示层

确保一个系统的应用层发送的信息被另一个系统的应用层接收到

  1. 会话层

通过传输层建立数据传输的通道

  1. 传输层

定义了传输协议和网络端口(www和80端口)

  1. 网络层

为处于不同地理位置的两台主机提供链接和路径选择

  1. 数据链路层

定义如何让格式化数据进行传输,以及如何让控制对物理介质的访问

  1. 物理层

物理设备标准,网线接口、光纤接口

TCP/IP协议

  1. 应用层(OSI中的应用层、表示层、会话层)

应用层面向不同的网络应用引入不同的网络协议,有基于TCP的,例如文件传输(FTP)、虚拟终端协议(TELNET)、超文本链接协议(HTTP),同样也有基于UDP协议的,例如域名解析服务(DNS)。

  1. 传输层

传输层的功能是使源端主机和目标端主机可以进行对等的会话。定义了两种协议1、传输控制协议(TCP)2.用户数据报协议(UDP)

  1. 网络互连层

定义了分组和互联协议,即IP协议

  1. 主机到网络层(OSI中的数据链路层、物理层)

 

何为IP协议

用于将多个包交换网络连接起来的,它在源地址和目的地址之间传输一种称为数据包的东西,它还能提供将数据大小的重新组装功能,以适应不同网络对包大小的要求

 

 

 

何为TCP协议

TCP协议最核心的就是三次握手过程,断开连接的四次分手过程

 

三次握手协议

  1. 客户端发送一个随机序列码(1000),发起连接,并等待服务端相应
  2. 服务端收到客户端请求后,发送自己初始序列码(1234),并将客户端的随机序列码加一后(1001)发还给客户端
  3. 客户端接收到服务端响应后,将服务端的初始序列码加一(1235)后,作为最终应答发还给服务端,此时链接建立成功

 

四次挥手协议

首先,挥手协议无论客户端还是服务端,均可主动发起

主动方、被动方由发起close命令来区分,并非严格规定挥手是由客户端还是服务端发起

 

  1. 主动方发起一个挥手,发送一个FIN,然后关闭主动方与被动方的数据传输,进入FIN_WAIT状态
  2. 被动方接收到到主动方发送的FIN后,发送一个ACK相应给主动方,此时被动方进入CLOSE_WAIT状态
  3. 被动方发送一个FIN给主动方,用于关闭被动方与主动方的数据传输,此时进入LAST_ACK状态
  4. 主动方收到FIN后,进入TIME_WAIT状态,接着发送一个ACK确认给被动方,然后进入CLOSE状态,完成四次挥手

 

一次完整的http请求是如何实现的

  1. 首先浏览器和服务端建立TCP的三次握手协议
  2. 浏览器向服务器发送一个命令,http://www.baidu.com,并且发送完成一个再发送一个空白行告知服务端发送信息结束
  3. 客户端发送完毕以后,服务端会向客户端会送应答,一般就是我们在header头中常见的状态码,例如200,404,500等
  4. 然后服务端根据客户端的请求地址相应具体的文档或相应结果
  5. 当服务端相应完结果后,会按照约定的conten-type,向客户端把信息发送过来
  6. 当服务端把信息发送给客户端后,原则上会将tcp请求关闭。若是connection若是设置为keep-alive(长链接的时候都是开启的)。这样的话tcp会始终保持

 
 

展开阅读全文
打赏
0
0 收藏
分享
加载中
更多评论
打赏
0 评论
0 收藏
0
分享
返回顶部
顶部