网络协议分层
通用的网络协议是分层的,每一层都有各自的作用和职责,通常是由上到下,分成 5 层。iOS参考模型有七层,对比如下:
应用层
最上层的,也是我们能直接接触到的就是应用层( Application Layer ),我们电 脑或手机使用的应用软件都是在应用层实现。那么,当两个不同设备的应用需要通信 的时候,应用就把应用数据传给下一层,也就是传输层。 所以,应用层只需要专注于为用户提供应用功能,不用去关心数据是如何传输的,就 类似于,我们寄快递的时候,只需要把包裹交给快递员,由他负责运输快递,我们不 需要关心快递是如何被运输的。 而且应用层是工作在操作系统中的用户态,传输层及以下则工作在内核态。
传输层
应用层的数据包会传给传输层,传输层(Transport Layer)是为应用层提供网络支 持的。 在传输层中有两种协议,分别是TCP和UDP.
- TCP 的全称叫传输层控制协议( Transmission Control Protocol ),大部分应用使用的正是 TCP 传输层协议,比如 HTTP 应用层协议。TCP 相比 UDP 多了很多特性,比如流量控制、超时重传、拥塞控制等,这些都是为了保证数据包能可靠地传输给对方。
- UDP 就相对很简单,简单到只负责发送数据包,不保证数据包是否能抵达对方,但它实时性相对更好,传输效率也高。当然,UDP 也可以实现可靠传输,把 TCP 的特性在应用层上实现就可以,不过要实现一个商用的可靠 UDP 传输协议,也不是一件简单的事情。
TCP和UDP传输协议区别
1、udp是无连接的,tcp是面向连接的; 2、udp是不可靠传输,tcp是可靠传输; 3、udp是面向报文传输,tcp是面向字节流传输。 端口 当设备作为接收方时,传输层则要负责把数据包传给应用,但是一台设备上可能会有 很多应用在接收或者传输数据,因此需要用一个编号将应用区分开来,这个编号就是 端口。(相当于应用的身份证号)
比如 80 端口通常是 Web 服务器用的, 22 端口通常是 SSH 远程登录服务器用的。 而对于浏览器(客户端)中的每个标签栏都是一个独立的进程,操作系统会为这些进 程分配临时的端口号。 由于传输层的报文中会携带端口号,因此接收方可以识别出该报文是发送给哪个应 用。
网络层
网络层最常使用的是 IP 协议(Internet Protocol),IP 协议会将传输层的报文作为数 据部分,再加上 IP 包头组装成 IP 报文,如果 IP 报文大小超过 MTU(以太网中一般 为 1500 字节)就会再次进行分片,得到一个即将发送到网络的 IP 报文。 对于 IPv4 协议, IP 地址共 32 位,分成了四段,每段是 8 位。为了区分,这里用到了子网掩码; 需要将 IP 地址分成两种意义:
一个是网络号,负责标识该 IP 地址是属于哪个子网的; 一个是主机号,负责标识同一子网下的不同主机;
IP 协议还有另一个重要的能力就是路由。实际场景中,两台设备并不是用一条网线连接起来的,而是通过很多网关、路由器、交换机等众多网络设备连接起来的,那么就会形成很多条网络的路径,因此当数据包到达一个网络节点,就需要通过算法决定下一步走哪条路径。
IP 协议的寻址作用是告诉我们去往下一个目的地该朝哪个方向走,路由则是根据「下一个目的地」选择路径。寻址更像在导航,路由更像在操作方向盘。
数据链路层
专门的层来标识网络中的设备,让数据在一个链路中传输,这就是数据链路层( Data Link Layer ),它主要为网络层提供链路级别传输的服务。
每一台设备的网卡都会有一个 MAC 地址,它就是用来唯一标识设备的。路由器计算 出了下一个目的地 IP 地址,再通过 ARP协议找到该目的地的 MAC 地址,这样就知 道这个 IP 地址是哪个设备的了。
物理层
当数据准备要从设备发送到网络时,需要把数据包转换成电信号,让其可以在物理介 质中传输,这一层就是物理层( Physical Layer ),它主要是为数据链路层提供二 进制传输的服务
关于IP
IP的基本认识
ip的作用
IP 在 TCP/IP 参考模型中处于第三层,也就是网络层 网络层的主要作用是:实现主机与主机之间的通信,也叫点对点(end to end)通 信。
ip与Mac的关系
MAC 的作用则是实现「直连」的两个设备之间通信,而 IP 则负责在「没有直连」的两个网络之间进行通信传输。
IP地址的基础知识
ip地址的定义
在 TCP/IP 网络通信时,为了保证能正常通信,每个设备都需要配置正确的 IP 地址, 否则无法实现正常的通信。 IP 地址(IPv4 地址)由 32 位正整数来表示,IP 地址在计算机是以二进制的方式处 理的。
IP地址分类
互联网诞生之初,IP 地址显得很充裕,于是计算机科学家们设计了分类地址。 IP 地址分类成了 5 种类型,分别是 A 类、B 类、C 类、D 类、E 类。
主机号全为 1 指定某个网络下的所有主机,用于广播 主机号全为 0 指定某个网络 因此,在分配过程中,应该去掉这两种情况
广播地址就是主机号都为1,意思就是包括这个网络内的所有主机
公有IP和私有IP
在ABC三类IP地址中,还可以分为公有IP和私有IP地址。
IP 地址与路由控制
IP地址的网络地址这一部分是用于进行路由控制。 路由控制表中记录着网络地址与下一步应该发送至路由器的地址,在主机和路由器上都会有各自的路由器控制表。 在发送 IP 包时,首先要确定 IP 包首部中的目标地址,再从路由控制表中找到与该地 址具有相同网络地址的记录,根据该记录将 IP 包转发给相应的下一个路由器。如果 路由控制表中存在多条相同网络地址的记录,就选择相同位数最多的网络地址,也就 是最长匹配。 计算机使用一个特殊的 IP 地址 127.0.0.1 作为环回地址,与该地址具有相同意义的 是一个叫做 localhost 的主机名。 使用这个 IP 或主机名时,数据包不会流向网络。
IP 协议相关技术
跟 IP 协议相关的技术也不少,接下来说说与 IP 协议相关的重要且常见的技术。
- DNS 域名解析
- ARP 与 RARP 协议
- DHCP 动态获取 IP 地址
- NAT 网络地址转换
- ICMP 互联网控制报文协议
DNS 域名解析
我们在上网的时候,通常使用的方式域名,而不是 IP 地址,因为域名方便人类记 忆。 那么实现这一技术的就是 DNS 域名解析,DNS 可以将域名网址自动转换为具体的 IP 地址。
在域名中,越靠右的位置表示其层级越高。
DNS解析图解
|