西河刘卡车医 发表于 2025-3-28 06:07:32

网络基础(二)

认识IP地点
IP 协议有两个版本, IPv4 和 IPv6.
IP 地点是在 IP 协议中, 用来标识网络中不同主机的地点;
对于 IPv4 来说, IP 地点是一个 4 字节, 32 位的整数;
  我们通常也使用 "点分十进制" 的字符串表示 IP 地点, 比方 192.168.0.1 ; 用点 分割的每一个数字表示一个字节, 范围是 0 - 255;

跨网段的主机的数据传输. 数据从一台计算机到另一台计算机传输过程中要经过一个或 多个路由器.
https://i-blog.csdnimg.cn/direct/2596763f43bd42499a55878d94329493.png在局域网通讯的过程中 主要依靠的是MAC地点 并且源MAC和目的MAC地点它是会不绝变化的 
 Mac 地点不绝在变
IP 地点在整个路由过程中,不绝稳定目的
IP 是一种长远目标,Mac 是下一阶段目标,目的 IP 是路径选择的重要依 据,mac 地点是局域网转发的重要依据
也就是设备发送的信息会有两套地点IP和MAC地点 

以太网为什么会叫以太网 这里的以太是物理学上推测失败的概念 借用它来形象地形貌网络中数据流传的特性,即数据信号通过一种共享的、无形的介质进行传输。
避免碰撞检测都是以太网 
令牌环中时只有持有令牌的设备才可以或许发送信息 别的设备只能担当和匹配信息 
 

将路由器看做主机  如许就相称于在局域网中心接通讯了  工作在网络层以及以上的设备也具有路由的功能  路由器要有两套接口赫尔两套步伐 

https://i-blog.csdnimg.cn/direct/7889e15f0774410a962d06aca57e15d4.png
在发送的设备中 网络层也有本身的IP地点 也具有本身的路由功能  而在同一个子网中 各人IP地点的前缀是相同的 以是通过目的IP地点的前缀与本身的前缀进行判断 就能区分  如果是相同IP地点 那么说明这个数据是在当前1局域网流传的  如果前缀不同 说明要进行垮局域网流传 

为什么能找到路由器 ? 在上网时路由器就已经毗连好了
https://i-blog.csdnimg.cn/direct/202f4cb859ef4b0d96a1f4c7d35a3980.png
封装 MAC帧 src MAC A dst MACleft  
解包(路由器) 找B  封装  src MACright  dst MACB   B设备收到后进行MAC地点匹配 匹配乐成后担当解包分用  在这整个过程中IP稳定  网络层全网统一 拿到的报文一样  
局域网的标准多样化  解决通过网络层屏蔽差异化 (软件解决) 同时IP MAC是汗青发展的产物 

IP网络层的意义: 提供网络虚拟层,让天下的全部网络都是 IP 网络,屏蔽 最底层网络的差异

socket编程
 明白IP地点和目的IP地点
1.IP地点唯一  2.IP地点分类 
但是体系中,同时会存在非常多的历程,当数据到达目标主机之后,怎么转发给目标 历程?这就要在网络的配景下,在体系中,标识主机的唯一性。
总结 (用户)历程 +网络(os)-> 网络(对方主机的os)+历程(对端用户)

端口号port
• 端口号是一个 2 字节 16 位的整数;
• 端口号用来标识一个历程, 告诉操纵体系, 当前的这个数据要交给哪一个历程来 处置惩罚;
• IP 地点 + 端口号可以或许标识网络上的某一台主机的某一个历程;
• 一个端口号只能被一个历程占用.
端口号范围划分
• 0 - 1023: 知名端口号, HTTP, FTP, SSH 等这些广为使用的应用层协议, 他们的 端口号都是固定的.
• 1024 - 65535: 操纵体系动态分配的端口号. 客户端步伐的端口号, 就是由操纵 体系从这个范围分配的.
网络通讯的本质 历程间通讯 IP+端口=socket 
端口号 与 pid 
这里为什么不统一使用pid 这里是为了 网络与操纵体系之间进行解耦合  
如何识别端口号 
操纵体系通过哈希表存储端口号与历程的映射关系
如果出现来不及拿走数据导致数据挤压  那么os管理就需要通过struct对其进行形貌管理  操纵体系担当数据放入管理队列 历程从队列中拿数据 这里是典型的消费者 生产者模型


明白源端口号和目的端口号
传输层协议(TCP 和 UDP)的数据段中有两个端口号, 分别叫做源端口号和目的端口号. 就是在形貌 "数据是谁发的, 要发给谁"

ip+port 叫做套接字 socket
认识 TCP 协议
• 传输层协议 • 有毗连 • 可靠传输 • 面向字节省
认识 UDP 协议
• 传输层协议 • 无毗连 • 不可靠传输 • 面向数据报
这里的可靠不可靠传输是特性 不是优缺点 

字节省 (水流) 数据报(快递)  读与发有无关系做区分

网络字节序
内存中的多字节数据相对于内存地点有大端和小端之分, 磁盘文件中的 多字节数据相对于文件中的偏移地点也有大端小端之分, 网络数据流同样有大端小端之 分.
网络字节序:采用大端字节序,确保网络通讯的一致性。

hton接口
https://i-blog.csdnimg.cn/direct/43433ff97a824d19aca3368bb633deb5.png
h 表示 host,n 表示 network,l 表示 32 位长整数,s 表示 16 位 短整数。 

点分十进制格式的IP地点 "192.168.34.45",
P地点在网络通讯中通常以4个字节(即4个char范例)的形式表示,这4个字节分别对应IP地点的四个部分(192, 168, 34, 45)。
struct ip 的布局体,用于存储IP地点的四个字节。布局体包含四个字符型变量 p1, p2, p3, p4,分别对应IP地点的四个部分。指向 struct ip 范例的指针 struct ip * addr,用于操纵和访问IP地点数据。

socket 编程接口
C
// 创建 socket 文件描述符 (TCP/UDP, 客户端 + 服务器)
int socket(int domain, int type, int protocol);
// 绑定端口号 (TCP/UDP, 服务器)
int bind(int socket, const struct sockaddr *address,
socklen_t address_len);
// 开始监听 socket (TCP, 服务器)
int listen(int socket, int backlog);
// 接收请求 (TCP, 服务器)
int accept(int socket, struct sockaddr* address,
socklen_t* address_len);
// 建立连接 (TCP, 客户端)
int connect(int sockfd, const struct sockaddr *addr,
socklen_t addrlen); sockaddr 布局
在网络编程中套接字种类非常多   
常见的有网络socket (网络+本地) 和 本地socket    统一socket接口 设计了struc socketaddr
当需要调用详细种类的布局体 时 通过强制范例转换就可以实现  那么如何区分不同种类的socket 
https://i-blog.csdnimg.cn/direct/589e61293cf1417dbf7020b58aed4d8c.png
通过布局体中的16位端口号进行区分 

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: 网络基础(二)