【Linux】网络基础1

网络基础
交换机:实现主机之间的数据交换
路由器:不但实现数据交换,并且实现数据的路径选择
网络的划分:局域网 ,城域网, 广域网 互联网 / 因特网
组网的方式:以太网 / 令牌环网

IP 和 PORT
在复杂的网络通信中,必须保证每个主机都有自己唯一的标识,只有这样才是实现精确的
点对点的通信。
IP地址:网络通信中主机的唯一标识
IPV4: uint32_t --无符号四个字节的整数 — 不到43亿;
会出现 IP 地址不够用的问题,所以有DHCP- 动态地址分配计数; NAT:网络地址转换技术
IPV6:uint8_t addr[16] 不向前兼容IPV4
网络通信中的每条数据中必须包含两条信息:源IP地址和目的IP地址–标识这个数据从哪来到哪去。
IP保证数据精确到达对端主机,但是如何保证一条数据由一个指定的进程来处理呢?
每条数据中都必须有一个标识来标识这个数据由哪个进程处理 — 端口 - PORT
端口是什么?用来干什么的?有什么特性?
端口号:在一台主机上面唯一标识一个进程,当操作系统接收到一条网络数据额能够知道应该
交给哪个进程处理。
类型:uint16_t 无符号两个字节的整数 0 ~ 65535
特性:一个端口只能被一个进程占用,一个进程可以使用多个端口
网络通信中每条数据除了具备源IP地址和目的IP地址之外还必须具备:源端口和目的端口
一个程序运行时可以告诉操作系统我是用哪个端口,则操作系统收到网络数据后,根据数据中的
端口来选择交给哪个进程来处理。
为什么网络通信中不适用进程ID来标识进程?
因为每次进程运行的时候进程ID都是临时赋予的不是固定的,端口号一旦绑定就一直不变。
说白了网络通信就是不同主机间的进程间通信。

协议就是一种约定,网络通信协议就是网络通信中的数据格式约定,只有在复杂的网络环境中定义通信协议标准才能实现网络互联。
协议分层:在通信环境中,按照提供的服务以及使用的协议对通信环境进行分层

网络通信环境模型:
ISO - OSI 七层网络通信模型:
应用层,表示层,会话层,传输层,网络层,链路层,物理层。
TCP / IP 五层网络通信模型:
应用层,传输层,网络层, 链路层,物理层。

  1. 应用层:负责应用程序之间的数据沟通; 典型协议: HTTP
    应用程序之间进行通信使用的协议,是程序员自己定义的协议。
  2. 传输层:负责应用程序之间的数据传输; 典型协议: TCP / UDP
    保证应用程序传输数据不会发送给别的程序,传输层协议都会包含端口信息。
    描述数据从哪个进程到哪个进程
  3. 网络层:负责地址管理和路由选择; 典型协议: IP
    典型设备:路由器:实现数据的路由转发
    为每一条网络通信数据从起点到终点的主机之间选择合适的路径进行传输
    描述数据从哪个主机到哪个主机
  4. 链路层:负责相邻设备之间的数据帧传输和识别; 典型协议: Ethernet 以太网协议
    典型设备:交换机:实现数据的交换转发
    mac地址:物理网卡硬件地址
  5. 物理层:负责物理光电信号的传输; 典型协议:以太网协议
    典型设备:集线器:将多根网线集合成为一根
    网络通信中的数据传输流程
    网络通信中的数据传输流程:封装与分用的过程
    在发送端主机上原始数据会经过TCP/IP五层层层的数据封装之后才会发送出去
    在接收端主机上收到封装的数据之后,会进行层层分用

网络字节序:
字节序:cpu在内存中对数据进行存取的顺序
大端字节序:低地址存高位
小端字节序:低地址存低位
一个主机字节序是大端还是小端取决于cpu架构,x86小端字节序,mips大端
在网络通信中,若两个主机的主机字节序不同,互相发送和接收后会产生数据二义性。
如何解决网络通信中因为主机字节序的不同造成的数据二义性问题?
不管一个主机的主机是大端还是小端,经过网络通信的时候统一使用网络字节序这
么一个标准,统一把数据转换为网络字节序。
网络字节序:就是大端字节序。
在网络通信中,并不是所有的数据都需要转换字节序:
在内存中存储数据的时候存储单位大于一个字节的数据:short / int / float / double / long
都需要字节序转换,但是字符串char buf[1024]是不需要字节序转换的,因为字符串存储
单位就是按字节存储的。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值