TCP/IP:有层次的协议栈

简介: TCP/IP:有层次的协议栈

说明

《透视HTTP协议》罗剑锋 (奇虎360技术专家)在极客时间开的一门专栏课,笔者记录一下学习笔记,仅供参考。



TCP/IP 网络分层模型

层次图如下:

aHR0cHM6Ly91c2VyLWdvbGQtY2RuLnhpdHUuaW8vMjAxOS8xMS8xOC8xNmU3ZGYxY2IyOGZmYzhm.png


第一层:链接层(link layer

负责在以太网、WiFi 这样的底层网络上发送原始数据包,工作在网卡这个层次,使用 MAC 地址来标记网络上的设备,所以有时候也叫 MAC 层


第二层:网际层或者网络互连层(internet layer)

   IP 协议就处在这一层。因为 IP 协议定义了IP 地址的概念,所以就可以在链接层的基础上,用 IP 地址取代 MAC 地址,把许许多多的局域网、广域网连接成一个虚拟的巨大网络,在这个网络里找设备时只要把 IP 地址再“翻译”成 MAC 地址就可以了。


第三层:传输层(transport layer)

保证数据在 IP 地址标记的两点之间“可靠”地传输,是 TCP 协议工作的层次。


  • TCP:是一个有状态的协议,需要先与对方建立连接然后才能发送数据,而且保证数据不丢失不重复
  • UDP:则无状态,不用事先建立连接就可以任意发送数据,但不保证数据一定会发到对方。
  • TCP 的数据是连续的字节流有先后顺序,而 UDP 则是分散的小数据包,是顺序发乱序收


第四层:应用层(application layer)

有各种面向具体应用的协议。例如 Telnet、SSH、FTP、SMTP、HTTP


MAC 层的传输单位是(frame)。

IP 层的传输单位是(packet)。

TCP 层的传输单位是(segment)。

HTTP 的传输单位则是消息或报文(message)。

可以统称为数据包


OSI 网络分层模型

OSI,全称是开放式系统互联通信参考模型Open System Interconnection Reference Model)。


OSI 模型分成了七层,如下图:

aHR0cHM6Ly91c2VyLWdvbGQtY2RuLnhpdHUuaW8vMjAxOS8xMS8xOC8xNmU3ZGYxY2I1Y2Y1MTQ0.png


第一层(物理层):网络的物理形式,例如电缆、光纤、网卡、集线器等等

第二层(数据链路层):它基本相当于 TCP/IP 的链接层

第三层(网络层):相当于 TCP/IP 里的网际层

第四层(传输层):相当于 TCP/IP 里的传输层

第五层(会话层):维护网络中的连接状态,即保持会话和同步

第六层(表示层):把数据转换为合适、可理解的语法和语义

第七层(应用层):面向具体的应用传输数据。




两个分层模型的映射关系

大概的一个对应关系:



  • 第一层:物理层,TCP/IP 里无对应
  • 第二层:数据链路层,对应 TCP/IP 的链接层
  • 第三层:网络层,对应 TCP/IP 的网际层
  • 第四层:传输层,对应 TCP/IP 的传输层
  • 第五、六、七层:统一对应到 TCP/IP 的应用层


TCP/IP 实际应用时的会话管理编码转换压缩等和具体应用经常联系的很紧密,很难分开。例如:HTTP 协议就同时包含了连接管理数据格式定义


aHR0cHM6Ly91c2VyLWdvbGQtY2RuLnhpdHUuaW8vMjAxOS8xMS8xOC8xNmU3ZGYxY2IzY2FjOGRm.png


四层负载均衡:就是指工作在传输层上,基于 TCP/IP 协议的特性,例如 IP 地址、端口号等实现对后端服务器的负载均衡。


七层负载均衡:就是指工作在应用层上,看到的是 HTTP 协议,解析 HTTP 报文里的 URI、主机名、资源类型等数据,再用适当的策略转发给后端服务器。


小窍门(不是绝对的):


“两个凡是”:凡是由操作系统负责处理的就是四层或四层以下,否则,凡是需要由应用程序(也就是你自己写代码)负责处理的就是七层。




TCP/IP 协议栈的工作方式


aHR0cHM6Ly91c2VyLWdvbGQtY2RuLnhpdHUuaW8vMjAxOS8xMS8xOC8xNmU3ZGYxY2I2MzA2MzUx.png


1、HTTP 协议的传输过程就是这样通过协议栈逐层向下,每一层都添加本层的专有数据,层层打包,然后通过下层发送出去。


2、接收数据则是相反的操作,从下往上穿过协议栈,逐层拆包,每层去掉本层的专有头,上层就会拿到自己的数据。










目录
相关文章
|
5月前
|
缓存 网络协议 Linux
手把手实现tcp/ip用户态协议栈,帮你实践网络知识(网络必备,面试项目)
手把手实现tcp/ip用户态协议栈,帮你实践网络知识(网络必备,面试项目)
|
11天前
|
网络协议 Java API
深度剖析:Java网络编程中的TCP/IP与HTTP协议实践
【4月更文挑战第17天】Java网络编程重在TCP/IP和HTTP协议的应用。TCP提供可靠数据传输,通过Socket和ServerSocket实现;HTTP用于Web服务,常借助HttpURLConnection或Apache HttpClient。两者结合,构成网络服务基础。Java有多种高级API和框架(如Netty、Spring Boot)简化开发,助力高效、高并发的网络通信。
|
11月前
|
消息中间件 网络协议 安全
TCP/IP 应用层常用协议
TCP/IP 应用层常用协议
294 0
|
网络协议 算法
【网络篇】第十二篇——TCP协议通讯流程
【网络篇】第十二篇——TCP协议通讯流程
【网络篇】第十二篇——TCP协议通讯流程
|
监控 网络协议 数据格式
第一张TCP/IP协议
一 什么是tcp/ip TCP/IP协议(Transfer ControlnProtocol/Internet Protocol)叫做传输控制/网际协议,又叫网络通讯协议,这个协议是Internet国际互联网络的基础。
114 0
|
网络协议 程序员 视频直播
TCP和UDP协议(深信服X计划)
TCP和UDP协议(深信服X计划)
237 0
TCP和UDP协议(深信服X计划)
|
存储 网络协议 算法
《我要进大厂》- 计算机网络夺命连环20问,你能坚持到第几问?(应用层协议 | TCP三次握手、四次挥手 | TCP可靠传输 | Cookie&Session)(下)
《我要进大厂》- 计算机网络夺命连环20问,你能坚持到第几问?(应用层协议 | TCP三次握手、四次挥手 | TCP可靠传输 | Cookie&Session)
《我要进大厂》- 计算机网络夺命连环20问,你能坚持到第几问?(应用层协议 | TCP三次握手、四次挥手 | TCP可靠传输 | Cookie&Session)(下)
|
网络协议 安全 机器人
《我要进大厂》- 计算机网络夺命连环20问,你能坚持到第几问?(应用层协议 | TCP三次握手、四次挥手 | TCP可靠传输 | Cookie&Session)(上)
《我要进大厂》- 计算机网络夺命连环20问,你能坚持到第几问?(应用层协议 | TCP三次握手、四次挥手 | TCP可靠传输 | Cookie&Session)
《我要进大厂》- 计算机网络夺命连环20问,你能坚持到第几问?(应用层协议 | TCP三次握手、四次挥手 | TCP可靠传输 | Cookie&Session)(上)
|
网络协议 算法 网络性能优化
理解TCP协议三次握手、四次挥手、流量控制、拥塞控制 、重传机制
TCP概述 TCP是一种面向连接的协议,在发送数据前通信双方必须在彼此间建立一条连接 所谓的连接其实就是客户端和服务器的内存里保存一份关于对方的信息,如IP地址、端口 TCP是一种字节流,它会处理IP层的丢包、重复以及错误问题 在建立连接的过程中,双方交换的一些参数可以放到TCP的头部 总结 :TCP提供了一种可靠、面向连接、字节流、传输层的服务,采用三次握手建立一个连接,四次挥手关闭一个连接
216 2
理解TCP协议三次握手、四次挥手、流量控制、拥塞控制 、重传机制
|
网络协议 Java
java实现TCP协议文件传输
java实现TCP协议文件传输
215 0