计算机与网络 - 网络IP篇(4)
1.4 网络 IP
1.4.1 IP 基本认识
1.4.1.1 IP 层
- IP(Internet Protocol)层是网络通信模型中的关键层,属于OSI模型的第三层,即网络层。
- 它负责在不同网络之间传输数据包,实现网络间的互联。IP层的主要功能包括:寻址:为每个网络设备分配一个唯一的IP地址,以确保数据能够准确地发送到目的地。路由:选择数据包从源到目的地的最佳路径。分段和重组:如果数据包太大而不能通过网络,IP层会将其分割成更小的片段,并在目的地重新组装。错误检测:通过头部的校验和来检测数据在传输过程中是否出现错误。
1.4.1.2 IP 层与数据链路层的关系
IP层与数据链路层(OSI模型的第二层)的关系密切,它们共同工作以实现网络通信:
- 封装:IP层生成的IP数据报文会被数据链路层封装成帧。数据链路层负责在同一个局域网内传输这些帧。
- 地址解析:IP层使用IP地址进行通信,而数据链路层使用MAC地址。IP层需要通过ARP(地址解析协议)将IP地址解析为MAC地址,以便数据链路层可以处理。
- 错误检测与纠正:数据链路层负责检测帧在局域网内传输时的错误,并进行必要的纠正。
1.4.1.3 IP 和 MAC
IP地址和MAC地址是网络通信中两种不同类型的地址:
- IP地址:用于在网络层标识设备,是逻辑地址,可以跨网络使用。IP地址分为IPv4和IPv6两种版本。
- MAC地址:用于在数据链路层标识网络接口卡(NIC),是物理地址,通常与硬件绑定,且在制造时分配,全球唯一。
- 转换:IP地址到MAC地址的转换通过ARP完成,而从MAC地址到IP地址的转换则通过RARP或DHCP等协议实现。
1.4.1.4 数据包传输中的不变性
数据包在网络中的传输需要保持某些属性的不变性,以确保数据的完整性和正确性:
- 源IP和目的IP:数据包的源IP和目的IP地址在整个传输过程中保持不变,以确保数据能够正确地从发送者传输到接收者。
- 数据内容:数据包中的数据内容在传输过程中不应被修改,除非是必要的头部信息,如TTL(Time to Live)字段的递减。
- 校验和:IP头部包含校验和,用于检测数据在传输过程中是否出现错误。如果检测到错误,数据包将被丢弃。
- 顺序:虽然IP层不保证数据包的顺序,但在某些情况下,如TCP传输,会通过序列号和确认应答机制来确保数据包的顺序性。
1.4.2 IP 地址的基础知识
1.4.2.1 IP 地址的分类
IP地址用于标识网络中的设备,最初分为A、B、C、D和E五类:
- A类地址:范围从0.0.0.0到127.255.255.255,用于大型网络,如政府和大型组织。
- B类地址:范围从128.0.0.0到191.255.255.255,用于中型网络,如企业。
- C类地址:范围从192.0.0.0到223.255.255.255,用于小型网络,如家庭和小型办公室。
- D类地址:范围从224.0.0.0到239.255.255.255,用于多播。
- E类地址:范围从240.0.0.0到255.255.255.255,用于实验和未来使用。
1.4.2.2 无分类地址 CIDR
CIDR(无分类域间路由)是一种用于IP地址分配和路由聚合的方法,它打破了传统的A、B、C类地址分类:
- 地址表示:使用斜线记法,如192.168.1.0/24,其中24表示网络前缀的长度。
- 优点:提高了IP地址的使用效率,减少了路由表的大小,简化了路由聚合。
1.4.2.3 公有 IP 地址与私有 IP 地址
- 公有IP地址:由IANA(互联网号码分配机构)及其下属机构分配,全球唯一,可在互联网上使用。
- 私有IP地址:仅在内部网络中使用,不会在互联网上路由,范围如下: A类:10.0.0.0 - 10.255.255.255B类:172.16.0.0 - 172.31.255.255C类:192.168.0.0 - 192.168.255.255
1.4.2.4 IP 地址与路由控制
IP地址在路由控制中的作用:
- 路由决策:路由器使用IP地址来决定数据包的下一跳。
- 子网划分:通过子网掩码来划分子网,提高网络的灵活性和安全性。
- NAT技术:网络地址转换技术,允许多个设备共享一个公有IP地址。
1.4.2.5 IP 分片与重组
- 分片:当数据包超过MTU(最大传输单元)时,IP层会将其分割成更小的片段。
- 重组:接收端的IP层负责将这些片段重新组合成原始数据包。
1.4.2.6 IPv6 基本认识
IPv6是互联网协议的最新版本,旨在解决IPv4地址耗尽的问题:
- 地址空间:提供了几乎无限的地址空间。
- 地址表示:使用冒号分隔的十六进制表示,如
2001:0db8:85a3:0000:0000:8a2e:0370:7334
。- 头部格式:简化了头部格式,提高了处理效率。
1.4.2.7 IPv4 首部与 IPv6 首部
- IPv4首部:包含版本、头部长度、服务类型、总长度、标识、标志、片偏移、生存时间(TTL)、协议、头部校验和、源IP地址、目的IP地址等字段。
- IPv6首部:包含版本、流量类别、流标签、有效载荷长度、下一个头部、跳数限制、源IP地址、目的IP地址等字段。
1.4.3 IP 协议相关技术
1.4.3.1 DNS
DNS(域名系统)是互联网的一项服务,它将人类可读的域名转换为机器可读的IP地址。
- 功能:DNS的主要功能是域名解析,即将域名(如www.example.com)解析为IP地址(如93.184.216.34)。
- 工作流程:当用户在浏览器中输入一个域名时,DNS解析过程开始,通常首先查询本地DNS缓存。如果未找到,再查询本地DNS服务器。如果本地服务器没有该记录,会向根DNS服务器查询,逐级向下直到找到对应的IP地址。
- 记录类型:DNS支持多种记录类型,包括A记录(地址记录)、MX记录(邮件交换记录)、CNAME记录(规范名称记录)等。
1.4.3.2 ARP
ARP(地址解析协议)用于将网络层的IP地址解析为数据链路层的MAC地址。
- 工作原理:当一个设备需要向另一个设备发送数据时,它会在本地ARP缓存中查找目的设备的MAC地址。如果找不到,它会在局域网内广播一个ARP请求,询问拥有该IP地址的设备的MAC地址。
- ARP表:ARP表是存储IP地址和对应MAC地址的缓存,以减少ARP请求的数量。
1.4.3.3 DHCP
DHCP(动态主机配置协议)是一种网络管理协议,用于自动分配IP地址和其他网络配置参数给网络中的设备。
- 功能:DHCP服务器可以自动分配IP地址、子网掩码、默认网关、DNS服务器等信息给客户端设备。
- 工作流程:客户端设备在加入网络时会发送DHCP请求,DHCP服务器响应并提供配置信息。这些信息可以是临时的(如租约),也可以是永久的。
1.4.3.4 NAT
NAT(网络地址转换)是一种技术,允许多个设备共享一个公有IP地址来访问互联网。
- 功能:NAT设备(通常是路由器)维护一个转换表,将内部私有IP地址映射到一个公有IP地址的不同端口上。
- 类型:NAT有多种类型,包括静态NAT、动态NAT和PAT(端口地址转换)。
1.4.3.5 ICMP
ICMP(互联网控制消息协议)用于在IP主机、路由器之间传递控制消息。
- 功能:ICMP消息用于网络诊断,如ping命令使用的就是ICMP的回显请求和回显应答消息。
- 消息类型:ICMP消息包括目的地不可达、时间超过、参数问题、重定向等类型。
Ping 是一种常用的网络命令,在网络故障排查和网络性能测试等方面具有重要作用。
其原理基于 Internet 控制消息协议 (ICMP),通过发送探测包并接收回复报文,测试互联网IP网络之间是否连通与可达情况。
- 向目标主机发送 ICMP 请求报文:当在本地主机上执行 ping 命令时,系统将发送一个 ICMP 报文给目标主机。
- 目标主机响应 ICMP 回应报文:如果目标主机可以对该报文进行响应,则它会返回一个 ICMP “响应”报文。
- 计算网络延迟时间:客户端接收到响应报文后,计算往返时间 RTT(Round-Trip Time),并且统计节点的丢包率。
1.4.3.6 IGMP
IGMP(互联网组管理协议)用于管理多播组成员资格。
- 功能:IGMP允许路由器发现和维护连接到其接口的多播组成员。
- 工作流程:当一个设备加入一个多播组时,它会发送IGMP报文来通知路由器。路由器定期发送查询报文来确认成员资格,如果收到响应,则继续转发多播数据包到该网络。
1.5 OS 篇
1.5.1 线程、进程的区别?通信方式?
1. 基本概念
- 进程:具有一定独立功能的程序,是系统进行资源分配和调度的一个独立单位,可以独立运行。
- 线程:进程的一个实体,CPU调度和分派的基本单位,不拥有系统资源,但可以访问进程资源。
2. 线程、进程的区别与联系
- 调度:线程是CPU调度的基本单位,进程是资源分配的基本单位。
- 并发性:进程间可以并发执行,同一进程的多个线程也可以并发执行。
- 资源拥有:进程拥有资源,线程不拥有资源,但可以访问进程资源。
- 联系:一个线程只能属于一个进程,一个进程可以有多个线程。同一进程的所有线程共享进程资源。
3. 多线程间通信方式
- 共享变量:通过共享对象的变量进行通信。
- volatile关键字:确保变量的可见性。
- wait()/notify():通过对象的
wait()
和notify()
方法实现线程间的协调。- synchronized关键字:确保对共享资源的同步访问。
4. 进程间通信方式
- 管道(Pipe):用于父子进程或兄弟进程间的数据传输。
- 消息队列:进程间通过消息队列交换消息。
- 共享内存:进程通过映射相同的内存区域来共享数据。
- 套接字(Socket):适用于不同主机间的进程通信。
1.5.2 物理地址和虚拟地址?
- 虚拟地址:程序使用的地址空间,由CPU在执行时产生。 特点:每个进程有自己的虚拟地址空间。通常比物理地址空间大。从0开始,通常是连续的。用途:提高内存利用率和安全性,使进程认为自己独占全部内存。
- 物理地址:内存中实际存储数据的地址,由硬件使用。 特点:每个存储单元都有自己的物理地址。直接与内存硬件交互。范围由物理内存大小决定。用途:将虚拟地址转换为实际存储数据的物理存储单元。
- 两者的关系: 地址映射:操作系统通过内存管理单元将虚拟地址转换为物理地址。内存保护:分离虚拟和物理地址,实现内存保护和隔离。地址空间隔离:每个进程有自己的虚拟地址空间,共享物理内存而不互相干扰。
1.5.3 Linux 的命名空间 namespace?
- Linux 命名空间是 Linux 内核的一个特性,它允许多个进程组共享某些资源,同时在这些资源上拥有独立的视图。这种隔离机制使得容器化技术(如 Docker)得以实现,因为它们可以利用命名空间来提供轻量级的隔离环境。
- 想象一下,你的电脑是一个大房子,里面有很多房间。你在不同的房间做不同的事情,每个房间都有自己的规矩和装饰。Linux 的命名空间就像是这些房间的规矩,它们让电脑里的程序能在自己的世界里运行,而不会影响到其他程序。
1.5.4 Linux 的常见命令?
- 文件目录:
cd、ls、pwd、cp、mv、rm、mkdir、rmdir
- 文件压缩:
tar、gzip、gunzip、zip、unzip
- 文件编辑:
cat、head、tail、vi、vim、nano
查看文件最后十行内容的命令:tail -n 10 filename。- 内存相关:
top、free、ps、df、du
- 网络相关:
ping、netstat、ifconfig、curl、wget
- 权限相关:
chmod、chown
权限分为三种:读(r)、写(w)和执行(x)。这些权限可以分配给文件的所有者(u)、所属组(g)以及其他用户(o)。
#八股文##计算机网络##笔记#
- Linux 如何查看一个 log 文件的内容?使用 cat、less、more、tail 等命令,例如 cat filename.log 或 tail -f filename.log 查看最新内容。
- Linux 如何搜索文件里的内容?通过 uid 搜索 log 文件打印出来下面的堆栈信息? 使用 grep 命令搜索内容,例如 grep 'uid' filename.log。打印堆栈信息可以使用 grep 'uid' filename.log | grep 'stack trace'。
- Linux 如何找出日志文件中 logid 为1的并且用户 id 为 b 的日志?grep "logid=1" 路径 | grep "userid=b"