(导航页博客)TCP/IP协议层层剖析,对整个TCP/IP协议有系统的理解
发布日期:2021-06-29 04:42:02 浏览次数:2 分类:技术文章

本文共 3804 字,大约阅读时间需要 12 分钟。

目录

0. TCP/IP协议概览

概览图

在这里插入图片描述

概述

  • 物理层: 负责光/电信号的传递方式. 比如现在以太网通用的网线(双绞 线)、早期以太网采用的的同轴电缆(现在主要用于有线电视)、光纤, 现在的wifi无线网使用电磁波等都属于物理层的概念。物理层的能力决定了最大传输速率、传输距离、抗干扰性等. 集线器(Hub)工作在物理层.

  • 应用层: 负责应用程序间沟通,如简单电子邮件传输(SMTP)、文件传输协议(FTP)、网络远程访问协议(Telnet)等. 我们的网络编程主要就是针对应用层.

  • 传输层: 负责两台主机之间的数据传输. 如传输控制协议 (TCP), 能够确保数据可靠的从源主机发送到目标主机.

  • 网络层: 负责地址管理和路由选择. 例如在IP协议中, 通过IP地址来标识一台主机, 并通过路由表的方式规划出两台主机之间的数据传输的线路(路由). 路由器(Router)工作在网路层.

  • 数据链路层: 负责设备之间的数据帧的传送和识别. 例如网卡设备的驱动、帧同步(就是说从网线上检测到什么信号算作新帧的开始)、冲突检测(如果检测到冲突就自动重发)、数据差错校验等工作. 有以太网、令牌环网, 无线LAN等标准. 交换机(Switch)工作在数据链路层.

层间数据包传输过程

在这里插入图片描述

1.应用层

应用层定义的是应用程序用于请求网络服务的接口,而不是指应用程序本身。应用层主要定义了应用程序能够从网络上请求使用哪种类型的服务,并且规定了在从应用程序接收消息或向应用程序发送消息时,数据所必须采用的格式。

DNS(Domain NameSystem)

DNS是一整套从域名映射到IP的系统。DNS将域名转换为IP地址,以便浏览器可以加载Internet资源。

工作原理: DNS查找中的8个步骤:

1.用户在Web浏览器中键入“example.com”,查询将进入Internet并由DNS递归解析程序接收。

2.解析器查询DNS根名称服务器。
3.根服务器使用顶级域(TLD)DNS服务器(例如.com或.net)的地址响应解析器,该服务器存储其域的信息。在搜索example.com时,我们的请求指向.com TLD。
4.解析器向.com TLD提出请求。
5.TLD服务器使用域名服务器example.com的IP地址进行响应。
6.递归解析器向域的名称服务器发送查询。
7.example.com的IP地址将从名称服务器返回到解析程序。
8.然后DNS解析器使用最初请求的域的IP地址响应Web浏览器。
一旦DNS查找的8个步骤返回了example.com的IP地址,浏览器就能够发出对网页的请求:

HTTP–Hyper Text Transfer Protocol,超文本传输协议,是一种建立在TCP上的无状态连接,整个基本的工作流程是客户端发送一个HTTP请求,说明客户端想要访问的资源和请求的动作,服务端收到请求之后,服务端开始处理请求,并根据请求做出相应的动作访问服务器资源,最后通过发送HTTP响应把结果返回给客户端。其中一个请求的开始到一个响应的结束称为事务,当一个事物结束后还会在服务端添加一条日志条目。

2.传输层

主要负责向两个主机中进程之间的通信提供服务,目前最广泛就是socket(IP加端口,决定应用程序连接唯一性)。主要实现协议有:TCP、UDP。

UDP

UDP协议格式

1.16位UDP长度, 表示整个数据报(UDP首部+UDP数据)的最大长度;
2.如果校验和出错, 就会直接丢弃;

在这里插入图片描述

UDP 传输特点

UDP传输的过程类似于寄信.

1.无连接: 知道对端的IP和端口号就直接进行传输, 不需要建立连接;
2.不可靠: 没有确认机制, 没有重传机制; 如果因为网络故障该段无法发到对方, UDP协议层也不会给应用层返回任何错误信息;
3.面向数据报: 不能够灵活的控制读写数据的次数和数量;应用层交给UDP多长的报文, UDP原样发送, 既不会拆分, 也不会合并。

TCP

TCP全称为 “传输控制协议(Transmission Control Protocol”). 人如其名, 要对数据的传输进行一个详细的控制。

确认应答

超时重传

连接管理

流量控制

拥塞控制

滑动窗口

延迟应答

捎带应答

确认应答

粘包问题

面向字节流

3.网络层

IP协议

在这里插入图片描述

主机: 配有IP地址, 但是不进行路由控制的设备;

路由器: 即配有IP地址, 又能进行路由控制;
节点: 主机和路由器的统称;

协议格式

在这里插入图片描述

  • 4位版本号(version): 指定IP协议的版本, 对于IPv4来说, 就是4.
  • 4位头部长度(header length): IP头部的长度是多少个32bit, 也就是 length * 4 的字节数.
    4bit表示最大的数字是15, 因此IP头部最大长度是60字节.
  • 8位服务类型(Type Of Service): 3位优先权字段(已经弃用), 4位TOS字段, 和1位保留字段(必须 置为0).
  • 4位TOS分别表示: 最小延时, 最大吞吐量, 最高可靠性, 最小成本. 这四者相互冲突, 只 能选择一个.
    对于ssh/telnet这样的应用程序, 最小延时比较重要; 对于ftp这样的程序, 最大吞 吐量比较重要.
  • 16位总长度(total length): IP数据报整体占多少个字节.
  • 16位标识(id): 唯一的标识主机发送的报文. 如果IP报文在数据链路层被分片了, 那么每一个片 里面的这个id都是相同的.
  • 3位标志字段: 第一位保留(保留的意思是现在不用, 但是还没想好说不定以后要用到). 第二位 置为1表示禁止分片,这时候如果报文长度超过MTU, IP模块就会丢弃报文. 第三位表示"更多分 片", 如果分片了的话, 最后一个分片置为1, 其他是0. 类似于一个结束标记.
  • 13位分片偏移(framegament offset): 是分片相对于原始IP报文开始处的偏移. 其实就是在表示当前分片在原报文中处在哪个位置. 实际偏移的字节数是这个值 * 8 得到的. 因此, 除了最后 一个报文之外,其他报文的长度必须是8的整数倍(否则报文就不连续了).
  • 8位生存时间(Time To Live, TTL): 数据报到达目的地的最大报文跳数. 一般是64. 每次经过一 个路由,
    TTL -=1, 一直减到0还没到达, 那么就丢弃了. 这个字段主要是用来防止出现路由循环
  • 8位协议: 表示上层协议的类型
  • 16位头部校验和: 使用CRC进行校验, 来鉴别头部是否损坏.
  • 32位源地址和32位目标地址: 表示发送端和接收端

网段划分(重要)

4.数据链路层

以太网

“以太网” 不是一种具体的网络, 而是一种技术标准; 既包含了数据链路层的内容, 也包含了一些物理层的内容.

例如: 规定了网络拓扑结构, 访问控制方式, 传输速率等;
例如以太网中的网线必须使用双绞线; 传输速率有10M, 100M, 1000M等;
以太网是当前应用最广泛的局域网技术; 和以太网并列的还有令牌环网, 无线LAN等;

以太网帧

在这里插入图片描述

源地址和目的地址是指网卡的硬件地址(也叫MAC地址), 长度是48位,是在网卡出厂时固化的;

帧协议类型字段有三种值,分别对应IP、ARP、RARP;
帧末尾是CRC校验码。

MAC地址

MAC地址用来识别数据链路层中相连的节点;

长度为48位, 及6个字节. 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)
在网卡出厂时就确定了, 不能修改. mac地址通常是唯一的(虚拟机中的mac地址不是真实的
mac地址, 可能会冲突; 也有些网卡支持用户配置mac地址).

MTU(以太网的最大传输单元)

以太网帧中的数据长度规定最小46字节,最大1500字节,ARP数据包的长度不够46字节,要在后

面补填充位;
最大值1500称为以太网的最大传输单元(MTU),不同的网络类型有不同的MTU;
如果一个数据包从以太网路由到拨号链路上,数据包长度大于拨号链路的MTU了,则需要对数据
包进行分片(fragmentation);
不同的数据链路层标准的MTU是不同的;

ARP协议

工作原理

ARP协议建立了主机 IP地址 和 MAC地址 的映射关系.

在网络通讯时,源主机的应用程序知道目的主机的IP地址和端口号,却不知道目的主机的硬件地 址;
数据包首先是被网卡接收到再去处理上层协议的,如果接收到的数据包的硬件地址与本机不符, 则直接丢弃; 因此在通讯前必须获得目的主机的硬件地址;

工作过程

源主机发出ARP请求,询问“IP地址是192.168.0.1的主机的硬件地址是多少”, 并将这个请求广播

到本地网段(以太网帧首部的硬件地址填FF:FF:FF:FF:FF:FF表示广播);
目的主机接收到广播的ARP请求,发现其中的IP地址与本机相符,则发送一个ARP应答数据包给
源主机,将自己的硬件地址填写在应答包中;
每台主机都维护一个ARP缓存表,可以用arp -a命令查看。缓存表中的表项有过期时间(一般为
20分钟),如果20分钟内没有再次使用某个表项,则该表项失效,下次还要发ARP请求来获得目的
主机的硬件地址

转载地址:https://blog.csdn.net/ZhangHahaaha/article/details/117235088 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!

上一篇:多线程常见锁策略—乐观悲观、自旋、读写、ABA问题及解决
下一篇:谈谈对数据库索引的了解—这些就很重要!!附相关高频面试题。

发表评论

最新留言

关注你微信了!
[***.104.42.241]2024年04月12日 11时05分55秒