TCP/IP 网络协议基础
纯手打,着重记忆红色字体部分和表格。
1. 预备知识
- mac 地址,为48位(6字节)地址,指的是网卡的唯一的硬件地址,交换机只能识别 mac 地址,负责局域网(内网)通信,局域网下的计算机应处于同一网段。
- IP 地址,IPv4为32位(4字节)地址,负责公网(外网)通信,可以访问不同网段。
- 模型分层是为了便于排查传输故障。
- ISO模式是理论模型,TCP/IP是事实上的标准。
2. ISO/OSI 七层模型
| 层级 | 名称 | 数据传输单位 |
|---|---|---|
| 7 | 应用层 | APDU 应用层协议数据单元 |
| 6 | 表示层 | PPDU 表示层协议数据单元 |
| 5 | 会话层 | SPUD 会话协议数据单元 |
| 4 | 传输层 | TPDU 传输协议数据单元,封装服务端口号 |
| 3 | 网络层 | 报文,封装收发双方的 IP 地址 |
| 2 | 数据链路层 | 数据帧,封装收发双方的 mac 地址 |
| 1 | 物理层 | 比特,进行实际的传输 |
1. 发送数据时,从应用层到物理层(顶层到底层),一级一级的封装。例如你在浏览器的地址栏中输入一个网址,就是浏览器提供给你的应用层接口,它最终被封装成网线中的二进制比特流;
2. 接收数据时,从物理层到应用层, 一级一级的解析;
3. 高3层为用户提供服务,其数据传输单位并无太大意义,如果数据不需要传输,则只会用到高3层。
4. 低4层为数据传输提供服务。
3. ISO/OSI 各层协议含义
应用层(7)
为用户提供接口。例如你在浏览器中输入的网址。地址栏就是程序为用户提供的接口。
表示层(6)
数据的表现形式。通过字符编码把字符解码成数据。特定功能的实现,如加密和压缩。
会话层(5)
对应用会话的管理、同步。
传输层(4)
- 指定传输协议,TCP是面向连接的可靠传输协议, UDP速度更快但不可靠。
- 传输前的错误检查,流量控制功能。
- 确定端口号,一台计算机中可以存在各种服务,例如,www 服务,mail 服务,ftp 服务,因此通过 ip 找到一台主机后,需要用端口号确定是何种服务。理论上各种服务的端口号是固定的。最多65535个端口号。
- 常用默认端口号如下:
网页服务端口号:80
邮件服务端口号:110(pop3,收) 和 25(smtp,发)
文件传输服务端口号:21 (FTP协议监听端口)
网络层(3)
提供逻辑地址,即 ip 地址;选择通路,自动选择传输过程中的各个路由器。
数据链路层(2)
数据帧,用 mac 地址访问媒介,错误检测与修正,例如数据错误时的重发机制。
物理层(1)
- 定义设备之间比特流的传输、物理接口、电气特性等。
- 比特流,是实际传输的二进制数据。
- 物理接口,例如网线的 RJ45或键盘鼠标的 PS/2接口。
- 电气特性指一根网线的8根线中,哪几根负责数据传输,其余的是冗余的。
4. TCP/IP 四层模式
应用层(4)
对应 ISO 的应用层、表示层、会话层
传输层(3)
- 对应 ISO 的传输层
- 为应用层实体提供端到端的通信功能,保证了数据包的正确传送及数据的完整性。
- 该层有2个主要协议:
传输控制协议(TCP)
- 可靠的面向连接的协议,发错则重发,不会丢失,因此可靠。
- 三次握手,因此需要连接。好比打电话。A 问 B,你在吗,B 回 A,我在,A 回 B,我也还在,则可进行通信。
- 例如网页,邮件用此协议。
用户数据包协议(UDP)
- 不可靠的无连接的协议,头信息更短,因此速度更快,但数据可能丢失。
- 例如QQ 聊天用此协议。
网际互联层(2)
- 对应 ISO 的网络层
- 主要解决主机到主机间的通信问题。
- 它所包含的协议设计数据包在整个网络上逻辑传输。该层有3个主要协议:
网际协议(IP)
互联网组管理协议(IGMP)
互联网控制报文协议(ICMP)
ping 命令用此协议。
网络接口层(1)
- 对应 ISO 的数据链路层、物理层。
- 负责监视数据在主机和网络之间的交换。
- 事实上,TCP/IP 协议并未定义该层的协议,而由参与互连的各网络使用自己的物理层和数据链路层协议,然后与 TCP/IP的网络接入层进行连接。
- 地址解析协议(ARP)工作在此层,即 ISO参考模型中的数据链路层,用于解析 mac 地址。
5. 数据封装过程
从顶层到底层,加入各层各自的头信息。
6. IP 地址
- IP包头的长度不确定,因此浪费资源。
- 32位地址,最多可表示255^4=40多亿个。
- 不同网段的 IP地址相互通信需要路由器。
- 各类的主机数实际上是由子网掩码决定的。
- 私有 IP 地址,即内网 IP,不能直接访问公网,不需要付费。
- 公网 IP 地址,需要付费。
- IP 和子网掩码必须一起使用,因为子网掩码决定以多少位表示 IP 地址网段,单独使用没有意义。
- IP地址在网络层封装。
7. IP地址分类
依据子网掩码,即以不同位数表示网段,分成三类:
A 类
左边1个字节表示不同网段,后面3个字节表示不同主机
B 类
左边2个字节表示不同网段,后面2个字节表示不同主机
C 类
左边3个字节表示不同网段,后面1个字节表示不同主机
8. 子网掩码
二进制形式为1位即是网段的范围。
1. 标准子网掩码
255.0.0.0
255.255.0.0
255.255.255.0
2. 变长子网掩码
不必用1到3个255表示,但二进制形式为1的位必须连续。
9. 各种地址的辨析
IP地址,子网掩码,网络地址,广播地址之间的关系。
| 名称 | 含义 |
|---|---|
| IP Address IP 地址 | 包括网络位、子网位、主机位 |
| Subnet Mask 子网掩码 | 决定用多少位表示网段 |
| Network ID 网络地址 | IP 地址和子网掩码按位与,即该网段的第一个地址 |
| 广播地址 | 最右侧的字节为255,即该字节各位都为1 |
广播地址是专门用于同时向网络中所有工作站进行发送的一个地址。
10. 端口的作用
- 端口用16位数字表示,最大为65536.
- 在传输层进行封装。
- 服务器的端口号若进行更改,则相当于隐藏,客户端就访问不到了。
- TCP 包头 有20字节。
- UDP包头更加简单,所以更快。
- 10000以内的端口号给系统用,其他的开发时随意用。
netstat 命令
用于查看本机启用的端口。
查看结果中,UDP协议没有状态那一列,因为 UDP不是面向连接的,不需要监听,直接发信。
实例
想要知道你连接的游戏的服务器的 IP地址,可以先把其他端口都关掉,然后连接游戏,再用此命令查看正在连接中的 IP 就是要找的 IP 地址。
11. DNS 的作用
- 域名系统,作用是域名解析,将域名解析成 IP 地址
- 必须配置 DNS 地址才能访问互联网
- 域名到 IP 为正向查询,如网页。
- IP 到域名为反向查询,如邮件。
hosts 文件
静态的 IP 和域名对应关系,优先于 DNS
域名空间结构
也叫完全合格域名,全球唯一,只要完全合格域名正确,一般就不是钓鱼网站,因为一般认为 DNS 不会被劫持。
| 域名 | 含义 |
|---|---|
| 根域 | 用点分隔,便于分级管理 |
| 顶级域 | 国家、地区、组织 |
| 二级域 | apple, google |
| 主机名 | www, NEWS |
域名服务器中,一级(顶级)域名管理二级域名,二级域名管理三级(主机)域名。一级一级的查询。
解析过程
- 先查询本地域名服务器,若果有缓存,则直接获得 IP 地址。(递归查询)
- 否则,询问根 DNS 服务器,再询问顶级域服务器,再询问二级域服务器,再询问主机域服务器,至此,得到要访问的IP 地址。(迭代查询)
- 最终用此 IP 地址访问目标 web 服务器。
12. 网关的作用
交换机
- 交换机会记录计算机的 mac 地址(交换机是二层设备,不认识 IP 地址),因此可进行局域网通信。
- 交换机的作用是在同一个网段的内网中通信。
网关
- 网关可以理解为路由器,可以用来访问不同网段。
- 网关的作用是将内网 IP 翻译成公网 IP。
- 路由要按照路由协议一级一级的传递。
- 如果只配置 IP 地址和子网掩码,则可以访问局域网。
- 必须配置全网关和 DNS 才能访问公网。
