//网络通讯 --- 不同主机之间的通信(进程间通信)
一、概述
目前使用的计算机网络模型主要分为两个:OSI七层模型和TCP/IP模型
相比OSI七层模型 ,TCP/IP模型更简洁,更实用,因此目前所使用的基本都是TCP/IP模型,已成为事实标准
二、OSI七层模型
OSI层 | 名称 | 核心功能与描述 | 关键词 | 协议数据单元 | 常见协议/设备 |
---|---|---|---|---|---|
第7层 | 应用层 | 为应用程序提供网络服务接口。是用户与网络的界面,提供各种特定的应用服务,如文件传输、电子邮件等。 | 网络服务、用户界面 | 报文 | HTTP, HTTPS, FTP, SMTP, POP3, DNS, Telnet |
第6层 | 表示层 | 处理数据的表示形式。确保一个系统应用层发出的信息另一个系统应用层能读懂。负责数据转换、加密解密、压缩解压缩。 | 翻译、加密、压缩 | 报文 | SSL/TLS, Gzip, JPEG, MPEG, ASCII |
第5层 | 会话层 | 建立、管理和终止应用程序之间的会话。负责对话控制(全双工或半双工)和同步(在数据流中插入检查点以便崩溃后恢复)。 | 对话控制、会话管理 | 报文 | NetBIOS, RPC (远程过程调用), PPTP |
第4层 | 传输层 | 负责端到端的完整通信。提供可靠或不可靠的数据传输,进行差错控制、流量控制、拥塞控制。数据单位称为段。 | 端到端、可靠性、流量控制 | 段 | TCP (可靠), UDP (不可靠) |
第3层 | 网络层 | 负责将数据包从源主机经过多个网络路由到目的主机。进行逻辑寻址(IP地址)、路由选择和拥塞控制。数据单位称为包。 | 逻辑寻址、路由、IP地址 | 包 | IP, ICMP, 路由器, 三层交换机 |
第2层 | 数据链路层 | 负责在同一局域网内相邻设备间的数据传输。进行物理寻址(MAC地址)、差错校验、帧同步。将比特流组织成帧。 | 物理寻址、帧、差错控制 | 帧:1500字节 (固定大小) |
以太网, 交换机, 网桥, PPP, MAC地址 |
第1层 | 物理层 | 在物理媒介上传输原始的比特流。定义设备的电气、机械、功能和规程特性,如电压、线速、线缆、接口等。 | 比特流、物理媒介、信号 | 比特 | 集线器, 中继器, 网线, 光纤, 无线电波 |
三、TCP/IP模型:网际互联模型(4层)
-----> 实用模型 ===》工业标准
应用层 (对应OSI的 5-7 层) ==》应用程序
传输层 (对应OSI的传输层) ==》端口号 //两种传输方式:tcp(传输控制) udp(用户数据报),延迟小
网络层 (对应OSI的网络层) ==》IP 地址
网络接口层 (对应OSI的 1-2 层) ==》网卡驱动1GB
一帧固定大小:1500字节
数据以帧为单位发送
IP头固定大小:20字节
IP flag:D M
DF(Don't Fragment) (1位)指示路由器不要分片这个数据包。如果路由器需要分片才能转发这个包,它会丢弃该包并向发送方返回一条ICMP“需要分片”消息。
MF(More Fragment) (1位) M=1表示后面还有数据报片。M=0则表示这已是最后一个数据报片。
TTL:TTL 就是一个数据包的“生命条”,每过一个路由器就减少一点,生命条归零就“死亡”(被丢弃),从而保证了网络的健壮性
方面 描述 字段名 TTL(Time To Live,生存时间) 位于 IPv4 包头部 长度 8 比特(值范围 0-255) 核心作用 防止数据包因路由环路等原因在网络中无限循环。 工作原理 每经过一个路由器(一跳),值减 1;值为 0 时被丢弃。 实际应用 Traceroute 工具利用 TTL 机制来探测网络路径。 常见初始值 Windows: 128, Linux/Unix/Mac: 64
TCP flag详细介绍见书章节5.5http://计算机网络http://计算机网络
四、tcp/ip协议栈
4.1应用层
协议简称 | 英文全称 | 核心功能简写 |
---|---|---|
DNS | Domain Name System 域名解析服务 |
域名 → IP地址 (互联网的电话簿) |
DHCP | Dynamic Host Configuration Protocol 动态主机配置协议 |
自动分配IP地址 (网络世界的租房中介) |
HTTP | Hypertext Transfer Protocol 超文本传输协议 |
传输网页数据 (Web通信的基石) |
TFTP | Trivial File Transfer Protocol 简单文件传输协议 |
简单无认证的文件传输 (局域网内的文件快递员) |
FTP | File Transfer Protocol 文件传输协议 |
带认证的可靠文件传输 (功能齐全的文件搬运工) |
SNMP | Simple Network Management Protocol 简单网络管理协议 |
监控和管理网络设备 (网络设备的管理员) |
详细介绍
DNS (Domain Name System) 域名系统
核心功能:将域名转换为IP地址。
详细介绍:DNS是互联网的“电话簿”或“翻译官”。它负责将人类易于记忆的域名(如 www.example.com
)解析为计算机用于路由和寻址的IP地址(如 192.0.2.1
)。它是一个分布式的全球数据库系统,通过层级结构(根域名服务器、顶级域服务器、权威域名服务器等)协同工作,确保了互联网的可扩展性和可靠性。没有DNS,我们将不得不记住每个网站的复杂数字IP地址。
DHCP (Dynamic Host Configuration Protocol) 动态主机配置协议
核心功能:自动为网络中的设备分配IP地址。
详细介绍:DHCP用于集中管理和自动分配IP地址及其他网络配置参数。当一台设备(客户端)接入网络时,它会向网络发送广播请求。DHCP服务器接收到请求后,会从其地址池中选择一个可用的IP地址,并连同子网掩码、默认网关、DNS服务器地址等“租借”给该设备。这极大地简化了网络管理,避免了手动配置IP地址可能造成的冲突和错误,实现了设备的即插即用。
HTTP (Hypertext Transfer Protocol) 超文本传输协议
核心功能:实现Web浏览器和服务器之间的网页传输。
详细介绍:HTTP是万维网(WWW)的数据通信基础,是一种无状态的请求-响应协议。客户端(通常是浏览器)向指定服务器的特定端口(默认为80)发起一个HTTP请求。服务器接收到请求后,会返回一个响应,其中包含请求的状态信息(如成功或失败)和所请求的内容(如HTML页面、图片等)。HTTP是无状态的,意味着服务器不会在不同请求之间记住用户,状态信息通常通过Cookie等技术在客户端保存。
TFTP (Trivial File Transfer Protocol) 简单文件传输协议
核心功能:提供简单的、无认证的文件传输服务。
详细介绍:TFTP是FTP的一个极简版本,设计非常轻量。它使用UDP协议(端口69)而非TCP,因此不需要建立连接,开销极小。但它缺乏高级功能,没有用户认证机制、不支持列出目录,且传输过程不可靠(需要自身实现简单的确认重传)。它主要用于局域网(LAN)内部,例如网络设备(如路由器、IP电话)的固件升级、无盘工作站的系统启动(PXE boot)等不需要安全认证的简单文件传输场景。
FTP (File Transfer Protocol) 文件传输协议
核心功能:提供可靠的、带身份验证的文件传输服务。
详细介绍:FTP是一个用于在网络上 between客户端和服务器之间传输文件的完整协议。它使用TCP协议(端口21用于控制连接,端口20用于数据连接)来保证传输的可靠性。FTP提供了一套完整的文件操作命令,包括上传、下载、删除、重命名、创建目录等。它支持用户认证(需要用户名和密码),可以管理不同的访问权限。虽然现在许多用途已被HTTP或SSH文件传输(SFTP)取代,但它仍然被广泛用于专门的软件和文件下载服务器。
SNMP (Simple Network Management Protocol) 简单网络管理协议
核心功能:用于监控和管理网络设备的状态。
详细介绍:SNMP是一种广泛应用于网络设备(如路由器、交换机、服务器、打印机等)管理的协议。它的工作模型包括:
管理站(Manager):网络管理员使用的监控系统。
代理(Agent):运行在被管理设备上的软件组件。
管理信息库(MIB):一个被管理设备参数的 hierarchical 数据库。
管理站通过SNMP协议向代理查询(GET) 或设置(SET) MIB中的对象值(如CPU利用率、端口状态、流量数据等)。代理也可以在发生特定事件(如设备重启、端口故障)时主动向管理站发送陷阱(Trap) 消息告警。这使得网络管理员能够在一个中央位置监控整个网络的健康度和性能
4.2传输层
TCP是TCP/IP协议族中非常核心的传输层协议。它的设计目标是保证数据在不可靠的IP网络之上能够可靠、有序地送达
UDP (User Datagram Protocol) 用户数据报协议
//核心功能:提供无连接的、尽最大努力交付的简单传输服务
4.3网络层
IP (Internet Protocol) 网际协议
//核心功能:负责将数据包从源主机跨网络路由到目标主机,实现网络互连。
//详细介绍:IP是TCP/IP协议族的核心,是网络层的代表协议。它的主要任务是在复杂的网络环境中进行逻辑寻址和路由选择。
无连接:发送数据前不建立连接,每个数据包(IP数据报)都是独立发送的。
不可靠:它尽最大努力交付(best-effort delivery),但不保证数据包一定能到达目的地,也不保证按顺序到达。可靠性由上层协议(如TCP)来保障。
逻辑地址:使用IP地址来唯一标识互联网上的每一台主机。IPv4地址为32位,IPv6地址为128位。
路由功能:路由器根据数据包中的目标IP地址和自身的路由表,决定将数据包从哪个接口转发出去,一步步跳转,最终送达目标主机
ICMP (Internet Control Message Protocol) 互联网控制报文协议
//核心功能:用于在IP主机、路由器之间传递控制消息,用于网络通断性诊断、错误报告等。
RIP (Routing Information Protocol) 路由信息协议(最佳路径) 和 OSPF (Open Shortest Path First) 开放最短路径优先
//核心功能:它们都是内部网关协议,用于在一个自治系统内部的路由器之间动态地交换和学习路由信息,从而自动构建路由表。
IGMP (Internet Group Management Protocol) 互联网组管理协议
//核心功能:允许主机向与其直接相连的路由器报告其想要加入或离开某个多播组。
URL(Uniform Resource Locator,统一资源定位符),俗称网址或链接。它是互联网上标准资源的地址,用于指定资源的位置以及访问该资源的协议。
简单来说:URL 是互联网上一个资源(如网页、图片、文件)的唯一地址,它告诉浏览器去哪里以及如何获取这个资源。
4.4接口层
ARP (Address Resolution Protocol) 地址解析协议
//核心功能:通过IP地址查询对应的MAC地址。解决的是“已知一个设备的IP地址,如何找到它的物理(MAC)地址?”的问题。
MAC:网卡硬件地址,该地址是唯一的,与网卡一一对应
RARP (Reverse Address Resolution Protocol) 逆向地址解析协议
//核心功能:通过已知的MAC地址请求分配一个IP地址。解决的是“我知道自己的物理地址(MAC地址),但我不知道我的逻辑地址(IP地址)是什么?”的问题。
五、网络基础 ===》A B C D E类
IP地址 == 网络号+ 主机号
IP地址的分类:点分十进制 ipv4 71293
A类:超大规模性网络
范围:1.0.0.0 ~ 126.255.255.255 126.1.1.1 //前1位网络号,后一位主机号
126.1.1.2
255.0.0.0
私有:
10.0.0.0 - 10.255.255.255
127.0.0.1
B类:大中规模型网络
范围:128.0.0.0 ~ 191.255.255.255 //前两位网络号,后两位主机号
128.2.1.2 128.2.7.2
255.255.0.0
私有: //局域网
172.16.0.0 - 172.31.255.255
C类:中小规模型网络
范围:192.0.0.0 ~ 223.255.255.255 //前三位网络号,后一位主机号
255.255.255.0
私有:
192.168.0.0 - 192.168.255.255
静态路由
192.168.0.0 //代表网络
192.168.0.1 //最低位默认代表网关(常见路由器)
192.168.0.255 //最高位255广播
D类:组播和广播
范围:224.0.0.0 ~ 239.255.255.255
192.168.0.255 == 255.255.255.255
235.1.2.3
192.168.1.0
192.168.0.1网关
192.168.1.255 广播
E类:实验
240.0.0.0 -255.255.255.255
<1>网络命令:
单机上网的配置:
1、有网络接口并插入网线。
2、有ip地址
3、配置网络设置
配置命令:sudo vim /etc/network/interfaces 网络配置文件,配置网卡分配ip地址的方式。
查看网卡设备信息命令: ifconfig
网关 : route add default gw x.x.x.x
DNS : vi /etc/resolv.conf == >nameserver 8.8.8.8
测试: ping www.baidu.com
查看本机所有的网络链接信息:netstat -anp
<2>网络接口
1、socket 套接字==》BSD socket ==》用于网络通信的一组接口函数。 socket api application interface
//socket 简单来说就是一个文件描述符(网络设备),网络设备打开的描述(套接字);编程使用的一套函数接口
2、ip+port 地址+端口===》地址用来识别主机,端口号用来识别进程(应用程序)
//port分为TCP port /UDP port 范围都是:1-65535
//约定1000 以内的端口为系统使用。
<3>网络字节序 ===》大端存储
主机字节序==》小端存储(数据的低位在内存的低地址存储)
大端转小端:ntohs();
小段转大端:htons();