• 首页 首页 icon
  • 工具库 工具库 icon
    • IP查询 IP查询 icon
  • 内容库 内容库 icon
    • 快讯库 快讯库 icon
    • 精品库 精品库 icon
    • 问答库 问答库 icon
  • 更多 更多 icon
    • 服务条款 服务条款 icon

Linux网络基础一

武飞扬头像
小小孩~
帮助5

网络发展背景

单机 >> 多用户远程操作 >> 网络

网卡:实现数字信号与电信号之间的转换

中继器: 信号放大,端口只有两个
集线器: 端口更多的中继器(类似于广播)
交换机: 端口更多,并且支持广播、组播、单播
路由器: 对数据进行路径选择(网络就是大量路由器互相进行连接,组成一个复杂的星型网络)

网络的划分:
局域网:覆盖范围在 1000 m 以内
城域网:覆盖范围在 20 km 以内
广域网:更大范围

组网方式:以太网、令牌环网
互联网、因特网------说的是同一个网络–> 国际化的广域网

网络基本概念

IP 地址

(一)IP地址:网络中用来唯一标识一台主机
网络传输的数据中,必然包含:源端 IP 地址,目的端 IP 地址,这两个信息标识了起点和终点;网络中路由器就会辨别这个目标主机 IP 地址属于哪个网络,然后规划路径将数据传输过去

目标地址:明确目标网络,进行网络中的路径规划
源端地址:让对方知道数据来源哪里,以便于进行回复

(二)IP地址的本质:
ipv4 : uint32_t 类型数据—无符号 32 位(4字节)整型数字(最大数字位 2^32 -1 )

DHCP 技术—动态地址分配(谁上网给谁分配地址)
NAT 技术—网络地址转换技术(主要用于私网组建----私网中大量主机可以使用同一个公网地址进行上网)

ipv6 : uint8_t ip[16] 类型 – 128位数据,但是 ipv6 不兼容 ipv4 ,导致推广慢,目前依旧广泛使用 ipv4 进行通信

ip 地址可以实现网络中指定的两台主机之间的通信,并且在网络中传输数据还必须在一台主机上标识应该由哪个进程来进行处理

端口

端口:在一台主机上用于唯一标识一个网络通信进程

本质:uint16_t 无符号 16 位整数(2 字节)

因此在网络传输的数据中,不仅要有 源端 IP、对端 IP ,还需有 源端端口、对端端口
(指定了哪两台主机上的哪两个进程之间的通信-------网络通信其实也是一种进程间通信)

一个端口只能属于一个网络通信进程,但是一个网络通信进程可以使用多个端口

一个网络通信进程运行起来,就会告诉系统和网卡收到的数据中,哪个数据应该交给自己来处理(告诉系统自己用了哪些端口)

Q:为什么标识了一个网络通信进程,要单独列出来一个端口,而不是直接使用进程的 PID??

答:进程 PID 在程序重启之后是会发生变化的。
对端 B 的 IP 地址和端口必须是固定的,否则 A 端就不知道关于B 端的地址和端口,则无法进行通信
实际上网络应用通信中,并不是两台客户端主机之间直接进行通信,而是有一个网络服务提供商,搭建服务器使用固定的地址与端口,每个用户使用的都是客户端,实质上通信是客户端与服务器间的通信

学新通

协议

协议也就是约定

网络协议:
网络通信中约定的数据格式,不同主机必须遵循相同的网络通信协议栈(一组协议)才可以实现实质上的通信

协议分层:
按照网络通信环境,不同层次所提供的服务,使用的协议,提供的接口对整个通信环境进行了分层

OSI 七层网络互联模型(细致划分)
应用层(应用程序)
表示层(数据形式–图片\文字\音频…)
会话层
传输层(进程间)
网络层(主机间)
链路层(相邻设备间)
物理层

TCP/IP 五层模型
(1)应用层:负责应用程序之间数据沟通的格式约定(QQ与QQ的沟通协议);
典型协议:HTTP\SSH\SMTP(邮件传输协议)\FTP(文件传输协议)
(2)传输层:负责进程之间数据传输的格式约定;
典型协议:TCP\UDP(内部描述源端端口、对端端口)
(3)网络层:负责地址管理与路由选择;
典型协议:IP协议(内部描述源端IP,对端IP),典型设备:路由器
(4)链路层:负责相邻设备之间的数据传输;
典型协议:ETH协议–以太网协议(内部描述了相邻设备的 MAC 地址-网卡标识,物理地址);典型设备:交换机
(5)物理层:负责物理光电信号的传输;
典型协议:以太网协议(与组网技术有关);典型设备:集线器

学新通

MAC 地址:物理硬件地址
每个网卡都有一个物理硬件地址,本质是 uint8_t mac[6] – 6字节的无符号整数

网络层的 IP 地址,描述了通信的起点与终点,但是数据不是直接从起点传输到终点的,而是经过大量中间设备进行转发到终点的;中间相邻设备进行转发的时候就使用到是 MAC 地址进行的标识

交换机是通过MAC地址进行确定转发的(每个交换机上有一个 MAC 地址表,标识当前连接交换机的设备连接到的是交换机的哪个插口-端口),给某个 MAC 地址设备发送数据,交换机就会通过 MAC 表查看对应属于的端口,然后通过这个端口将数据发送出去

网络字节序

字节序

CPU 对于内存中的数据以字节为单位进行存取的顺序

分类:
CPU 地址有高低之分,数据的二进制形式也有高低位之分,数据在内存中存储有两种不同方式:

大端字节序:低地址存放高位数据
小端字节序:低地址存放低位数据

eg:
int a=0x01020304;
大端存储:01020304
小端存储:04030201

字节序所针对的数据类型:
存储单元大于 1 字节的数据类型—short \ int \ double \float \ long (但字节存储不需要考虑字节序问题–char)

主机字节序不同对于网络通信的影响:
若网络通信的两台主机,主机字节序相同则不用考虑字节序问题;
若主机字节序不同,则会产生数据二义性(数据传输:发送什么数据,对方就接受什么数据,但是按照自己主机字节序解释数据时会产生数据二义性)

解决方案:网络传输的数据,使用统一的字节序标准—>网络字节序(大端字节序)
若编写网络程序要考虑跨平台问题,存储单元大于 1 字节的数据类型对应的数据,要使用网络字节序进行通信

网络套接字

(指定如何编写一个网络通信程序)

(1)网络通信的数据中包含一个完整的五元组:
sip、sport、dip、dport 、protocol (源端 IP,源端端口、对端 IP、对端端口,协议)
五元组完整的描述了数据从哪来到哪去,用什么数据格式传输

(2)网络通信----通常讨论的是两个主机进程之间的通信:客户端 & 服务端
客户端网络通信程序:指用户使用的一端
服务端网络通信程序:指网络应用提供商提供服务的一端程序

客户端是首先发起请求的一端(因为服务端不知道客户端地址----动态地址分配技术),但是网络应用服务提供商开发的客户端程序中都写入了服务器端的地址和端口,因此客户端是知道服务端地址的
(只要客户发送请求,服务端才能提供相应的服务)

套接字编程

套接字 :socket 表示系统提供给程序员实现网络通信的一套接口

学习套接字接口的使用,通过这套接口实现网络通信

TCP 、UDP 协议

基本概念区别

两者都是传输层的协议

TCP 协议:
传输控制协议-----提供的是面向连接、可靠、 基于字节流的数据传输 (如:打电话)
(1)面向连接:通信前先建立链接,确定双方是否具备数据的收发能力
(2)可靠传输:通过大量的一些控制机制,保证数据能够安全(有序且完整、一致)到达对端
(3)字节流:传输单元以字节为单位,没有传输大小的限制,传输比较灵活的一种传输方式
tcp 适用于安全性要求大于实时性要求的场景 eg:文件传输

UDP 协议:
用户数据报协议—提供的是无连接、不可靠、基于数据报的数据传输 (如:发短信)
(1)无连接:不需要建立连接,只需要知道对方的地址,就可以直接进行发送数据
(2)不可靠:只要数据可以发送成功即可,不关心是否能够达到对端
(3)数据报传输:有大小限制,且传输交付以数据报为单元,不能传输交付半条/多条数据
udp 适用于实时性要求大于安全性要求的场景 eg:视频音频传输

这篇好文章是转载于:学新通技术网

  • 版权申明: 本站部分内容来自互联网,仅供学习及演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,请提供相关证据及您的身份证明,我们将在收到邮件后48小时内删除。
  • 本站站名: 学新通技术网
  • 本文地址: /boutique/detail/tanhfabfbk
系列文章
更多 icon
同类精品
更多 icon
继续加载