网络基础(二)
认识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]