网站建设的发展前景,翻译做网站,做销售有什么软件可以找客户,wordpress网页小特效本章目录1. TCP/IP网络模型1.1 应用层1.1.1 应用层作用1.1.2 应用层有哪些常用协议1.2 运输层1.2.1 TCP与UDP的区别1.2.2 分块传输1.2.3 端口1.3 网络层1.3.1 IP报文1.3.2 IP地址1.3.3 网络号和主机号的获得1.3.4 子网掩码的获得1.3.5 路由1.3.6 IP地址与MAC地址的区别1.3.7 AR…
本章目录1. TCP/IP网络模型1.1 应用层1.1.1 应用层作用1.1.2 应用层有哪些常用协议1.2 运输层1.2.1 TCP与UDP的区别1.2.2 分块传输1.2.3 端口1.3 网络层1.3.1 IP报文1.3.2 IP地址1.3.3 网络号和主机号的获得1.3.4 子网掩码的获得1.3.5 路由1.3.6 IP地址与MAC地址的区别1.3.7 ARP协议1.3.7.1 ARP协议如何工作1.3.7.2 广播包的特征1.3.8 IP报文经过路由器的转发过程及变化1.4 网络接口层1.4.1 网络接口层作用1.4.2 网络接口层协议1.4.3 为什么要加MAC头部/为什么有了IP地址还要用MAC地址1. TCP/IP网络模型
OSI是七层协议模型五层协议只是OSI和TCP/IP的综合。实际应用还是TCP/IP的四层结构为了方便可以把最下面两层称为网络接口层。 Note最下层物理层是第一层最上层应用层为第五层不要搞反顺序。
网络接口层的传输单位是帧frameIP 层的传输单位是包packetTCP 层的传输单位是段segmentHTTP 的传输单位则是消息或报文message。但这些名词并没有什么本质的区分可以统称为数据包。
1.1 应用层
1.1.1 应用层作用
应用层直接为用户的应用进程提供服务只需专注于为用户提供应用功能无需关心数据是如何传输的。
1.1.2 应用层有哪些常用协议
HTTP协议
目前绝大部分采用的都是HTTP 1.1版本默认开启长连接connections: Keep-Alive。
HTTP协议是“无状态”的协议一般通过Session来记录客户端的状态。
SMTP协议
SMTP协议是邮件发送协议接收邮件的协议并不是SMTP而是POP3或IMAP。
POP3/IMAP协议
负责接收邮件的协议是POP3/IMAP后者更新一点。
FTP协议
FTP协议用于文件传输是基于客户端/服务器C/S模式设计的在客户端和服务器之间建立两个连接。该协议的优点是可以屏蔽操作系统和文件存储方式。
FTP协议的独特优势与其他C/S程序最大的不同点
它在两个主机之间使用了两条TCP连接而其他C/S应用程序一般只有一条TCP连接
控制连接用于传送控制信息命令和响应数据连接用于数据传送
Telnet协议
Telnet是远程登录协议通过一个终端登录到其他服务器。
Telnet最大的缺点之一是所有数据包括用户名和密码均以明文形式发送有着安全风险。这也是为什么SSH协议取代Telnet协议的主要原因。
SSH协议
SSH是安全的网络传输协议专为远程登录会话和其他网络服务提供安全性的协议。
SSH相比于Telnet的区别在于SSH会对数据进行加密。利用SSH协议可以有效防止远程管理过程中的信息泄漏问题。
1.2 运输层
运输层作用
运输层负责向两个主机中进程之间的通信提供通用的数据传输服务。由于一个主机可以同时运行多个进程因此运输层有复用和分用的功能。
复用多个应用层进程可同时使用下面运输层的服务。
分用把收到的信息分别交付给上面应用层中相应的进程。
运输层并不负责将数据从一个设备传输到另一个设备这是网络层的任务不要混淆。
“通用的”是指并不针对某一个特定的网络应用而是多种应用可以使用同一个运输层服务。
运输层协议 传输控制协议TCPTransmission Control Protocol面向连接的数据传输单位是报文段能够进行可靠交付用户数据报协议UDPUser Datagram Protocol无连接的数据传输的单位是用户数据报不保证可靠交付只能提供“尽最大努力交付”
1.2.1 TCP与UDP的区别
大部分应用使用的正是 TCP传输层协议比如 HTTP应用层协议。TCP相比 UDP多了很多特性比如流量控制、超时重传、拥塞控制等这些都是为了保证数据包能可靠地传输给对方。
UDP相对来说就很简单只负责发送数据包不保证数据包是否能抵达对方但UDP的实时性相对更好传输效率也高。
TCP是面向连接的传输数据前要建立连接而UDP是无连接的传输数据前不需要建立连接TCP提供可靠的服务无差错、不丢失、不重复、按序到达而UDP是尽最大努力交付不保证可靠交付TCP面向字节流实际上是TCP把数据看成一连串无结构的字节流而UDP是面向报文的TCP连接只能是点对点的UDP支持一对一、一对多、多对一、多对多TCP首部开销20字节而UDP首部只有8个字节开销小TCP的逻辑通信信道是全双工的可靠信道而UDP是不可靠信道
1.2.2 分块传输
应用传输的数据可能会非常大如果直接传输不好控制因此当传输层的数据包大小超过MSSTCP最大报文段长度时就要将数据包分块这样即使中途有一个分块丢失或者损坏了只需要重新发送这一个分块而不用重新发送整个数据包。在TCP协议中把这样的分块叫做报文段。 1.2.3 端口
运输层把数据包传给应用时如果接收设备上有很多应用在接收或者传输数据因此需要用一个编号将应用区分开来这个编号就是端口。
比如 80 端口通常是 Web 服务器用的22 端口通常是远程登录服务器用的。而对于浏览器客户端中的每个标签栏都是一个独立的进程操作系统会为这些进程分配临时的端口号。
由于运输层的报文中会携带端口号因此接收方可以识别出该报文是发送给哪个应用。
1.3 网络层 网络层作用寻址路由 负责为分组交换网上的不同主机提供通信服务。 在发送数据时网络层把运输层产生的报文段或用户数据报封装成分组或包进行传送。在TCP/IP体系中由于网络层使用的是IP协议因此分组也叫作IP数据报或者简称为数据报。 选择合适的路由使源主机运输层传下来的分组能够通过网络中的路由找到目的主机。 网络层协议 IPInternet Protocol、ICMP、IGMP、ARP、RARP
1.3.1 IP报文
IP协议会将运输层传输下来的报文作为数据部分再加上IP包头组装成IP报文如果IP报文大小超过MTU以太网中一般为 1500 字节就会再次进行分片得到一个即将发送到网络的IP报文。 1.3.2 IP地址
网络层负责将数据从一个设备传输到另一个设备世界上那么多设备又该如何找到对方呢因此网络层需要有区分设备的编号。
我们一般用 IP 地址给设备进行编号对于 IPv4 协议 IP 地址共 32 位分成了四段比如192.168.100.1每段是 8 位。
只有一个单纯的 IP 地址虽然做到了区分设备但是寻址起来就特别麻烦全世界那么多台设备难道一个一个去匹配这显然不科学。
因此需要将IP地址分成两种意义
一个是网络号负责标识该IP地址是属于哪个子网的一个是主机号负责标识同一子网下的不同主机
在寻址过程中先匹配到相同的网络号表示要找到同一子网才会去找对应的主机。
1.3.3 网络号和主机号的获得
将IP地址10.100.122.2和子网掩码255.255.255.0进行按位与运算就可以得到网络号和主机号。 1.3.4 子网掩码的获得
10.100.122.0/24斜杠后面的数字表示32位子网掩码从左数共有多少个连续的1/24就是代表子网掩码的二进制为「11111111-11111111-11111111-00000000」那么对应的十进制子网掩码为 255.255.255.0 。
1.3.5 路由
IP协议除了寻址作用还有另一个作用——路由。
实际场景中两台设备并不是用一条网线连接起来的而是通过很多网关、路由器、交换机等众多网络设备连接起来的那么就会形成很多条网络的路径因此当数据包到达一个网络节点就需要通过路由算法决定下一步走哪条路径。
路由器寻址工作中就是要找到目标地址的子网找到后进而把数据包转发给对应的网络内。 IP寻址是告诉我们去往下一个目的地该朝哪个方向走路由则是根据【下一个目的地】选择路径。寻址像是在导航路由像是在操作方向盘。
1.3.6 IP地址与MAC地址的区别
使用的区别IP地址是逻辑地址是网络层及以上各层使用的地址。而MAC地址又称硬件地址是物理地址是数据链路层和物理层使用的地址。放置位置的区别IP地址放在IP数据报的首部而MAC地址放在MAC帧的首部长度的区别IP地址由32bit构成而MAC地址由48bit构成为什么要使用两种不同的地址——IP数据报在网络传输过程中不论经过多少次路由转发IP数据报首部的源IP地址和目的IP地址都不变用于表示源主机和目的主机这样一个端到端的关系而在网络接口层传输MAC帧时MAC帧头部的源MAC地址和目的MAC地址分别是相邻结点间的MAC地址所以每经过一个路由就会改变一次。
1.3.7 ARP协议
ARPAddress Resolution Protocol地址解析协议用于实现从IP地址到MAC地址的映射即询问目标IP对应的MAC地址。
1.3.7.1 ARP协议如何工作
首先每个主机都会在自己的ARP高速缓存中维护一个本局域网上各主机和路由器的IP地址和MAC地址的映射表当源主机要发送数据时首先会检查ARP映射表中是否有目的IP地址对应的MAC地址。 如果有则直接通过MAC地址找到对应的主机发送数据如果没有则向本局域网中的所有主机发送ARP广播包包含源主机IP、源主机MAC地址、目的主机IP、暂时以12个F表示的目的主机MAC地址 当本局域网中的所有主机收到该ARP广播包时首先检查广播包中的目的IP地址是否和自己一样 如果相同则 从广播包中取出源主机IP地址和源主机MAC地址写入自己的ARP映射表中。如果之前就存在则覆盖。然后将自己的MAC地址写入ARP响应中告诉源主机自己是它要找的目的MAC地址 如果不相同就直接丢弃 源主机收到ARP响应包后将目的主机的IP地址和MAC地址写入自己的ARP映射表并利用此信息发送数据。如果源主机一直未收到ARP请求包表示ARP查询失败。
1.3.7.2 广播包的特征
大部分的广播包它们有一个共同特征二层封装时目的MAC是全fffff.ffff.ffff或三层封装时目的IP是全1255.255.255.255。可以这样更方便的记住目的地址最大的就是广播。
1.3.8 IP报文经过路由器的转发过程及变化
路由器收到数据包后报文送到数据链路层数据链路层解封以太网帧头部提取目的MAC地址查看目的MAC地址是不是自己本身的MAC地址。这个时候出现两种情况具体如下
情况1是本机的MAC地址则把报文传到网络层由网络层继续解析。情况2不是本机的MAC地址则丢弃报文。
假设是情况1目的MAC是自己的MAC把报文送到网络层解析。送到网络层后网络层解析提取目的IP地址判断目的IP地址是不是本机的IP地址。这个时候再次出现两种情况具体如下
情况1是本机IP则把报文送到上层有传输层进行解析。由于本次主要讲解转发流程就不讲传输层解析的过程了。情况2不是本机IP则去查路由表匹配出接口。
假设是情况2不是本机IP查路由表根据路由的最长掩码匹配原则匹配路由表找到出接口。查路由的时候会出现四种情况具体如下
情况1没有匹配路由无法继续转发则丢弃报文。并向源IP发送目的不可达的ICMP报文。情况2匹配直连路由网络层封装目的IP和源IP使用目的IP地址查ARP表。寻找目的MAC。情况3匹配非直连路由网络层封装目的IP和源IP使用路由表里的下一跳IP地址查ARP表。寻找下一跳IP地址的目的MAC。情况4匹配默认路由网络层封装目的IP和源IP使用路由表里的下一跳IP地址查ARP表。寻找下一跳IP地址的目的MAC。
假设匹配到路由去ARP表匹配目的IP对应的MAC地址。这个时候出现两种情况具体如下
情况1在ARP表里匹配到了对应的MAC地址则把匹配到的MAC封装到帧头部的目的MAC把本机出接口的MAC封装到帧头部的源MAC里。然后发送出去。情况2在ARP表里没有匹配到对应的MAC地址则发送ARP请求寻找目的IP对应的MAC地址。
假设没有匹配到对应的MAC地址发送ARP请求这个时候会遇到两种情况。具体如下
情况1没有收到ARP响应无法继续获取目的IP对应的MAC地址。则丢弃报文。情况2收到了ARP响应首先把响应报文中的源MAC解析出来然后把目的IP和从响应报文中获取的源MAC放到ARP表中形成映射关系并对这个映射关系添加过期时间。然后把MAC封装到目的MAC里把本机出接口的MAC封装到源MAC里然后发送出去。
1.4 网络接口层
我们可以把网络接口层看成是数据链路层和物理层的合体。
1.4.1 网络接口层作用
数据链路层将网络层交下来的IP数据报加上MAC头部封装成帧在两个相邻计算机节点之间的链路上传送帧。每一帧都包括数据和必要的控制信息如同步信息、地址信息、差错控制等物理层是用来实现相邻计算机节点之间比特流的透明传送尽可能屏蔽掉具体传输介质和物理设备的差异
1.4.2 网络接口层协议
PPP协议
1.4.3 为什么要加MAC头部/为什么有了IP地址还要用MAC地址
IP头部中的接收方IP地址表示数据包的目的地通过这个地址我们可以判断要将数据包发到哪里但是在以太网中这个思路是行不通的。
因为以太网是一种在【局域网】内把附近的设备连接起来使他们之间可以通讯的技术。电脑上的以太网接口Wi-Fi接口以太网交换机、路由器上的千兆万兆以太网口还有网线它们都是以太网的组成部分。
以太网在判断数据包目的地时和IP的方式不同因此必须采用相匹配的方式才能在以太网中将数据包发送到目的地。而MAC头部就是实现这个的。
MAC头部是以太网使用的头部它包含了接收方和发送方的MAC地址等信息我们可以通过ARP协议获取对方的MAC地址。