本文共 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 传输特点UDP协议格式
1.16位UDP长度, 表示整个数据报(UDP首部+UDP数据)的最大长度; 2.如果校验和出错, 就会直接丢弃;
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 如侵犯您的版权,请留言回复原文章的地址,我们会给您删除此文章,给您带来不便请您谅解!