【Linux】网络基础_2

文章目录

  • 十、网络基础
    • 2. IP地址和MAC地址
    • 3. 端口号
      • 端口号和进程ID
    • 4. 网络字节序
  • 未完待续


十、网络基础

2. IP地址和MAC地址

IP协议有两个版本,IPv4和IPv6, 用的比较多的都是IPv4。IP地址是在IP协议中,用来标识网络中不同主机的地址;对于IPv4来说,IP地址是一个4字节,32位的整数;我们通常也使用 “点分十进制” 的字符串表示IP地址,例如 192.168.0.1 。用点分割的每一个数字表示一个字节,范围是 0 - 255。
在网络通信中,两个主机进行通信,识别主机的就是使用这个IP地址。在网络层的IP协议中,添加到协议报头里就包含源IP地址(本机)和目标IP地址(目标主机)。
MAC地址用来识别数据链路层中相连的节点。长度为48位,6个字节。 一般用16进制数字加上冒号的形式来表示(例如: 08:00:27:03:fb:19)这个地址相当于网卡地址。网络传输中依据的就是这个地址进行传输。
在数据链路层时,会将当前MAC地址和下一个节点的MAC地址添加到协议报头中。
在这里插入图片描述
由于路由器覆盖了不止一个的子网。所以就可以借助路由器这个节点进行不同子网间的主机通信。主机在链路层会把路由器的MAC地址作为目标,将报文借助子网1传输给路由器,路由器会将报文进行解包再封装,修改MAC地址,源MAC地址变成路由器节点的MAC地址,目标MAC地址变成目标主机的MAC地址(可能会重复以上流程),再借助子网2把报文传输给目标主机。
IP地址可以理解为坐公交车时的上车点和目标站,标识地点的。
MAC地址可以理解为上一站和下一站,具有路径性质的地址。

在命令行输入 ifconfig 可以查看当前主机的IP地址和MAC地址。
在这里插入图片描述

3. 端口号

端口号(port)是传输层协议的内容。当我们将数据报通过传输层解包给应用层时,由于应用层中有大量的进程,其中大部分进程都与我们的网络通信无关,我们应该把数据报传输给指定进程。如何识别这个进程呢?我们使用的就是 端口号
网络通信的本质,其实是进程间的通信,看到的公共资源就是 —— 网络。
IP地址标识唯一主机 + port端口号标识唯一进程 = 互联网中唯一的进程。
端口号是一个2字节16位的整数,端口号用来标识一个进程,告诉操作系统当前的这个数据要交给哪一个进程来处理。一个端口号只能被一个进程占用。

端口号和进程ID

有人认为,进程ID就可以标识唯一进程,为什么我们要使用端口号呢?因为进程ID是操作系统的理论,端口号是网络方面的理论,如果同一使用进程ID,那么耦合程度就高了,我们要避免不同模块之间的过度耦合。其次,在操作系统中,每个进程都有自己的pid,但不是每个进程都有port。而且,一个进程可以绑定多个端口号,但是一个端口号不能被多个进程绑定。

4. 网络字节序

我们已经知道,内存中的多字节数据相对于内存地址有大端和小端之分, 磁盘文件中的多字节数据相对于文件中的偏移地址也有大端小端之分, 网络数据流同样有大端小端之分. 那么如何定义网络数据流的地址呢?

发送主机通常将发送缓冲区中的数据按内存地址从低到高的顺序发出。
接收主机把从网络上接到的字节依次保存在接收缓冲区中,也是按内存地址从低到高的顺序保存。
因此,网络数据流的地址应这样规定:先发出的数据是低地址,后发出的数据是高地址。
TCP/IP协议规定:网络数据流应采用大端字节序,即低地址高字节。
不管这台主机是大端机还是小端机,都会按照这个TCP/IP规定的网络字节序来发送/接收数据。
如果当前发送主机是小端,就需要先将数据转成大端;否则就忽略,直接发送即可。

为使网络程序具有可移植性,使同样的代码在大端和小端计算机上编译后都能正常运行,可以调用以下库函数做网络字节序和主机字节序的转换。
在这里插入图片描述

这些函数名很好记,h表示host,n表示network,l表示32位长整数,s表示16位短整数。
例如 htonl 表示将32位的长整数从主机字节序转换为网络字节序,例如将IP地址转换后准备发送。
如果主机是小端字节序,这些函数将参数做相应的大小端转换然后返回。
如果主机是大端字节序,这些函数不做转换,将参数原封不动地返回。


未完待续

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/pingmian/49154.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Android SurfaceFlinger——关联EGL三要素(二十七)

通过前面的文章我们得到了 EGL 的三要素——Display、Surface 和 Context。其中,Display 是一个图形显示系统或者硬件屏幕,Surface 代表一个可以被渲染的图像缓冲区,Context 包含了 OpenGL ES 的状态信息和资源,它是执行 OpenGL 命令的环境。下一步就是调用 eglMakeCurrent…

如何发现快速发现分析生产问题SQL

Performance Schema介绍 Performance Schema提供了有关MySQL服务器内部运行的操作上的底层指标。为了解释清楚Performance Schema的工作机制,先介绍两个概念。 第一个概念是程序插桩(instrument)。程序插桩在MySQL代码中插入探测代码&#xf…

启动金运项目的方法

1.前端工程在Terminal总npm run serve 2.mongoDB数据库打开,详情见Docker进入MongoDB-CSDN博客 3.后端工程把SpringApplication播放起来

谷粒商城实战笔记-包依赖踩坑

一, java.lang.ClassNotFoundException: org.springframework.boot.context.properties.ConfigurationBeanFactoryMetadata ClassNotFoundException类似错误,都是依赖问题,特别是模块比较多,有模块相互依赖、父子依赖&#xff0c…

目标检测的即时演进:在线学习在行动

目标检测的即时演进:在线学习在行动 在线学习(Online Learning)是一种机器学习范式,它允许模型通过逐步接收数据并实时更新来学习。这种学习方式对于目标检测尤其重要,因为它允许检测系统在不断变化的环境中适应新的或…

【Rust光年纪】探究Rust异步I/O库:高性能网络应用的选择指南

构建高性能网络应用:Rust异步编程库全方位解析 前言 随着互联网的快速发展,构建高性能和可扩展的网络应用程序变得愈发重要。而异步I/O库和异步编程库在这一领域扮演着至关重要的角色。本文将对几种用于Rust语言的异步I/O库和异步编程库进行介绍和比较…

基本聚集函数和case的应用

文章目录 1.基本聚集函数(1)基本聚集函数的介绍(2)使用基本聚集函数的简单例子&#xff08;1&#xff09;查询最大年龄&#xff0c;最小年龄年龄和平均年龄<1>最大年龄<2>最小年龄<3>平均年龄 (2&#xff09;配合上where语句&#xff0c;查询女士的平均年龄(…

挽民族星光,寻家乡特色

2024年7月15日 西安工程大学计算机科学学院“筑梦乡村&#xff0c;携手同行”赴马家乔蒸面进行进一步探索调查。 实践队伍首先来到蒸面馆初步观察&#xff0c;店铺不大客流量却很多&#xff0c;虽忙的不可开交服务态度却格外热情&#xff0c;紧接着上楼参观了蒸面的制作流程与基…

Python polars学习-09 数据框关联与拼接

背景 polars学习系列文章&#xff0c;第9篇 数据框关联与拼接&#xff08;Join 、Concat&#xff09; 该系列文章会分享到github&#xff0c;大家可以去下载jupyter文件&#xff0c;进行参考学习 仓库地址&#xff1a;https://github.com/DataShare-duo/polars_learn 小编运…

2024前端面试真题【手写篇】

求几个数的总和&#xff08;2&#xff0c;3&#xff0c;4&#xff0c;5&#xff0c;6&#xff0c;6&#xff0c;7&#xff0c;7&#xff0c;8&#xff0c;8&#xff0c;8&#xff09; arr.reduce((total, currentVal, currentInd, arr)>{}, initialVal) const arr [2&#…

C++:智能指针 [unique_ptr]

文章目录 0x1 基本使用0x11 get() [ 参照auto_ptr ]0x12 release() [ 参照auto_ptr ]0x13 reset() [ 参照auto_ptr ]0x14 get_deleter() [ 新增 ]0x15 operator bool [ 新增 ]0x16 swap() [ 新增 ]0x2 make_unique函数 [unique_ptr在C11引入&#xff0c;make_unique在C14引入]0…

JAVA笔记十四

十四、集合 1.集合概述 (1)集合是存储其它对象的特殊对象&#xff0c;可以将集合当作一个容器 (2)集合的相关接口和类位于java.util包中 (3)集合中的接口和类是一个整体、一个体系 2.集合接口 接口定义了一组抽象方法&#xff0c;实现该接口的类需要实现这些抽象方法&…

Docker核心技术:Docker原理之Cgroups

云原生学习路线导航页&#xff08;持续更新中&#xff09; 本文是 Docker核心技术 系列文章&#xff1a;Docker原理之Cgroups&#xff0c;其他文章快捷链接如下&#xff1a; 应用架构演进容器技术要解决哪些问题Docker的基本使用Docker是如何实现的 Docker核心技术&#xff1a;…

C++初学者指南-5.标准库(第一部分)--标准库最小/最大算法

C初学者指南-5.标准库(第一部分)–标准库min/max算法 文章目录 C初学者指南-5.标准库(第一部分)--标准库min/max算法minmaxminmaxclamp (C17)min_elementmax_elementminmax_element相关内容 C标准库算法是一块新领域&#xff1f;⇒简短介绍 min min(a, b) → a 如果 a < b则…

Linux_实现UDP网络通信

目录 1、实现服务器的逻辑 1.1 socket 1.2 bind 1.3 recvfrom 1.4 sendto 1.5 服务器代码 2、实现客户端的逻辑 2.1 客户端代码 3、实现通信 结语 前言&#xff1a; 在Linux下&#xff0c;实现传输层协议为UDP的套接字进行网络通信&#xff0c;网络层协议为IPv4&am…

基于Fabric 的区块链测试方法调研与总结

Fabric概述 从应用层视角来看&#xff0c;Hyperledger Fabric为开发人员提供了CLI命令行终端、事件模块、客户端SDK、链码API等接口&#xff0c;为上层应用提供了身份管理、账本管理、交易管理、智能合约管理等区块链服务&#xff0c;具体如下&#xff1a; 身份管理&#xff…

百年传承,味在蒸面

2024年7月15日&#xff0c;西安工程大学赴陕西安康“筑梦乡村&#xff0c;携手同行”暑期社会实践团队前往陕西安康鼓楼西街对非遗美食马国庆蒸面进行实践活动。 早晨七点&#xff0c;实践团队在鼓楼西街路口整装集合前往马国庆蒸面&#xff0c;据实践团队前期资料收集了解到马…

k8s+containerd(kvm版)

k8s&#xff08;Kubernetes&#xff09;是由Gogle开源的容器编排引擎&#xff0c;可以用来管理容器化的应用程序和服务&#xff0c;k 高可用&#xff1a;系统在长时间内持续正常地运行&#xff0c;并不会因为某一个组件或者服务的故障而导致整个系统不可用可扩展性&#xff1a…

【SpringBoot】 jasypt配置文件密码加解密

目前我们对yml配置文件中的密码都是明文显示&#xff0c;显然这不安全&#xff0c;有的程序员离职了以后可能会做一些非法骚操作&#xff0c;所以我们最好要做一个加密&#xff0c;只能让领导架构师或者技术经理知道这个密码。所以这节课就需要来实现一下。 我们可以使用jasypt…

爬虫学习3:爬虫的深度爬取

爬虫的深度爬取和爬取视频的方式 深度爬取豆瓣读书 import time import fake_useragent import requests from lxml import etree head {"User-Agent":"Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/126.0.0.0 …