TCP/IP协议

在互联网中存在各种各样的协议,我们根据这些协议的使用划分了OSI 和 TCP/IP 参考模型。

根据 TCP/IP 参考模型就有了我们熟悉的 TCP/IP 协议。

这里主要介绍OSI参考模型各个分层的主要作用,TCP/IP参考模型可对照查看。

  1. 应用层:针对特定应用的协议,如文件传输、电子邮件和远程登录等。
  2. 表示出:设备固有数据格式和网络标准数据格式的转换。
  3. 会话层:通信管理。负责建立和断开通信连接。
  4. 传输层:管理两个节点之间的数据传输。
  5. 网络层:地址管理和路由选择。
  6. 数据链路层:互联网设备之间传送和识别数据帧。
  7. 物理层:以 0 和 1 代表电压的高低、灯光的闪灭。

下面介绍一下 TCP/IP 参考模型中各层的主要协议。

  1. 应用层:telnet(远程登录)、http、ssl/tls
  2. 传输层:TCP(有连接通信)、UDP(无连接通信);
  3. 网络层:IPv4、IPv6;
  4. 网络接入层:以太网、无线lan、光纤。

1 DNS 协议

DNS 协议是和Http协议已于位于应用层的协议。它提供域名到IP地址之间的解析服务。如我们输入百度网址,它会返回网址的ip地址。

2 IP 协议

IP网际协议位于网络层,其主要的作用是把各种数据包传送给对方,分为三大模块:

  1. IP寻址:通过ip地址找到具体的路由器或mac地址。
  2. 路由控制:ip寻址找到具体的地址后,路由控制将分组数据发送到最终目标地址。
  3. IP分包与组包:由于每个路由,网络的带宽大小不一,所以ip协议需要合理分配数据包和组合数据包。

3 TCP 协议

TCP 协议位于传输层,通过检验和、序列化、确认应答、重发控制和连接管理等机制保证了 IP 传输数据的可靠性。主要是通过三次握手和四次挥手实现这项功能。

图片各字段意义如下:

  1. seq:所传数据的序号。TCP 传输时每一个字节都有一个序号,发送数据时会将数据的第一个序号发送给对方,接收方会按序号检查是否接受完成,如果接受不完成,需要重发数据包。
  2. ack:确认号。接收端用它来给发送端反馈已经成功接收到的数据信息。
  3. ACK: 确认位,只有 ACK=1 时,ack才起作用。
  4. SYN: 同步位,用于建立连接时同步序号。当接收端接收到 SYN=1 时,会将ack设置为seq+1的值,这里的值是根据 SYN 设置的,这样就保证了接收端和发送端的ack是一致的。
  5. FIN: 终止位,用来在数据传输完毕后释放连接。

4 UDP 协议

UDP 相对于 TCP 不提供负责的控制功能,主要是面向无连接的通信。它可以随时发送数据,而不需要关心接收端是否存在。再加上由于它的简单又高效,主要用于以下几个方面:

  1. 包总量较小的通信,如DNS;
  2. 多媒体通信,如即时通讯;
  3. 广播通信;
  4. 限定与局域网等特定网络中的应用通信。

5 HTTP 协议

Http 协议是应用层的协议,在 TCP 协议接收到数据之后需要通过 Http 协议来解析才可以使用。http 协议中的报文分为请求报文(request)和响应报文(response),这两种类型都包含三部分:首行、头部和主体。

在 TCP/IP 模型中,http数据包结构如下:

  1. 应用层:http 数据;
  2. 传输层:tcp首部[http数据]
  3. 网络层:ip首部[tcp首部[http数据]]
  4. 链路层:以太网首部[ip首部[tcp首部[http数据]]]

5.1 HTTP状态码

HTTP状态码负责表示客户端HTTP请求的返回结果、标记服务器端的处理是否正常、通知出现的错误等工作。

5.1.1 2XX成功

2XX的响应结果表明请求被正常处理了。

  1. 200 OK:表示从客户端发来的请求在服务器端被正常处理。
  2. 204 No Content:服务器接收的请求已成功处理,但在返回的响应报文中不含实体的主体不服。另外,也不允许返回任何实体的主体。
  3. 206 Partial Content:客户端进行了范围请求,而服务器成功执行了这部分的GET请求。

5.1.2 3XX重定向

3XX响应结果表明浏览器需要执行某些特殊的处理以正确处理请求。

  1. 301 Moved Permanently:永久性重定向。该状态码表示请求的资源已被分配了新的URL,以后应使用资源现在所指的URL。
  2. 302 Found:临时重定向。该状态码表示请求的资源已被分配了新的URL,希望用户(本次)能使用新的URL访问。
  3. 303 See Other:由于请求对应的资源存在着另一个URL,应使用GET方法定向获取请求的资源。
  4. 304 Not Modified:客户端发送附加条件的请求时,服务器端允许请求访问资源,但因发生请求未满足条件的情况后,直接返回304 Not Nodified(服务器端资源未改变,可直接使用客户端未过期的缓存)。
  5. 307 Temporary Redirect:临时重定向。该状态码与302有着相同的含义。

5.1.3 4XX客户端错误

4XX的响应结果表明客户端是发生错误的原因所在。

  1. 400 Bad Request:请求报文中存在语法错误。
  2. 401 Unauthorized:发送的请求需要有通过HTTP认证的认证信息。
  3. 403 Forbidden:对请求资源的访问被服务器拒绝了。
  4. 404 Not Found:服务器无法找到请求的资源。

5.1.4 5XX服务器错误

5XX的响应结果表明服务器本身发生错误。

  1. 500 Internal Server Error:服务器端在执行请求时发生了错误。
  2. 503 Service Unavailable:服务器暂时处于超负载或正在进行停机维护,现在无法处理请求。

6 HTTPS 协议

Https协议=http+通信加密+证书+完整性保护=http+ssl/tls协议。https协议实质是在http和tcp通信中增加了一层 ssl/tls 协议。

 


Appendix

Revision History

时间 描述
2017-09-25 博文完成

CSDN:http://blog.csdn.net/y550918116j

GitHub:https://github.com/937447974

发布了406 篇原创文章 · 获赞 28 · 访问量 42万+
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章