linux下的网络编程:基础概念+UDP编程

目的:实现不同主机,进程间的通信

实现需要解决的问题:

  • 主机和主机之间物理层面必须互联互通。
  • 进程与进程在软件层面必须互联互通。

一、概念

(1)网络示意图

交换机:实现跨局域网(短距离数据传输)通信。

路由器:实现数据的路由(路径的选择),进行路径规划。→工作在网络层。

每个路由器中,均存在一个路由表,其主要是存储路由器所爱信号范围内其他路由器的相关信息。

  • MAC地址:计算机的硬件地址(固定)。
  • IP地址:计算机软件地址,用来标识计算机设备(标记不同主机)。
  • 网络端口号:标记同意主机上的不同网络进程。

(2)网络协议------"网络通信标准"

1.OSI七层模型(open system interconnect)

------开放系统互连模型,"理论模型"

1)目的:解决不同设备间网络的通信标准。

2)分类:

要传输的数据信息,如下文件传输,电子邮件等。

数据加密,解密操作,压缩,解压缩。➡保证其安全性。

建立数据传输通道。 ➡建立一次会话。

传输的方式 ( UDP 、TCP)。➡决定数据的数据的传输方式。

实现数据路由,路径规划 。➡ 路由器 ip工作在此层。

封装成帧,点对点通信(局域网内通信),差错检测 。➡交换机 ARP在此工作。

  • 物理层

定义物理设备标准、电气特性,比如网线,光纤等传输介质 。➡将数据链路层封装成帧转化成高低电平,即比特流(bit)然后通过传输介质进行传输。

2.TCP/TP模型------"应用模型"

(一)TCP模型------"五层'

  • 应用层(应用层、表示层、会话层)
  • 传输层
  • 网络层
  • 数据链路层
  • 物理层

(二)IP模型------"四层"

  • 应用层(应用层、表示层、会话层)
  • 传输层
  • 网络层
  • 网络接口层(数据链路层、物理层)

(三)各层的网络协议

1)应用层

  • HTTP:超文本传输协议
  • HTTPS:超文本传输协议(SSL加密算法)
  • FTP:文件传输协议➡TCP工作在传输层。
  • TFTP:简单文件传输协议 ➡UDP
  • MQTT:消息队列遥测传输(物联网协议)
  • DNS:域名解析服务器(如:baidu.com)➡将域名转换为IP地址。

2)传输层

先进行路径规划,在进行传输,所以安全性、可靠性高。

  • TCP:传输控制协议
  • UDP:用户数据协议

直接进行传输,可能会造成数据的丢失,所以安全性不高。

3)网络层

  • IP协议:IPV4、IPV6

4)数据链路层

ARP:地址解析协议(将IP地址转换为MAR地址)。

3.IP协议

(一)分类

  • IPV4------32位(均表示IP地址)
  • IPV6------128位(解决了IPV4地址不足的问题)

在windows上查IP地址:windows+R➡输入cmd➡输入命令ipconfig

在虚拟机上查IP地址: 输入命令ifconfig

(二)IPV4概念

1)表达形式:

192.168.0.140 (用户表现形式)点分十进制

11000000 10101000 00000000 01000001 (计算机存储形式)4 * 8 bit

2)组成

IP地址 = 网络位 + 主机位

判断IP地址的网路位和主机位时,需要搭配子网掩码查看:

子网掩码全为1的IP地址的网络段,子网掩码是0的部分对应IP地址的主机位

<192.168.0.121/24 ➡24:网络位的位数>

3)特殊的IP地址

  • 网络位:该IP地址处于哪个网段(局域网)内。
  • 主机位:这个网段(局域网)第几台主机。
  • 网段号:IP地址网络位不变,主机位全为0,则为该IP地址的网段号

如:192.168.1.0 网段内(网段内的IP能直接通信)

  • 广播号:IP地址网络位不变,主机位全为1,则为该IP地址的广播号

如:192.168.1.255(向广播号发送信息,所有局域网内IP都能收到此信息)

  • 网关地址:IP地址网络位不变,主机位为

如:192.169.1.1

4.IP地址的划分

(1)A类地址:

范围:1.0.0.0 - 126.255.255.255

子网掩码:255.0.0.0 126*2^24

用于管理大规模网络

私有IP地址:10.0.0.0 - 10.255.255.255

127.0.0.0 回环地址

(2)B类地址:

范围:128.0.0.0 - 191.255.255.255

子网掩码:255.255.0.0 2^16

管理大中规模网络

私有IP地址:172.16.0.0 - 172.31.255.255

(3)C类地址:

范围:192.0.0.0 - 223.255.255.255

子网掩码:255.255.255.0 2^8

管理中小规模网络

私有IP地址:192.168.0.0 - 192.168.255.255

(4)D类地址:

224.0.0.0 - 239.255.255.255

组播和广播使用

(5)E类地址:

240.0.0.0 - 255.255.255.254

用来进行实验

公有IP:由电信公司直接分配,并需要付费的IP地址, 可以直接访问internet

私有IP:不能直接访问internet的ip地址

节省ip地址

5.端口号网络

------16位整形数据(unsigned short)

(1)功能

标记同一主机上的不同网络进程

(2)范围

0~65535

(3)分类

  • 任何TCP/IP实现所提供的服务都用1-1023之间的端口号。

http : 80

FTP: 20/21

TFPT: 69

HTTPS: 443

  • 端口号从1024-49151是被注册的端口号,被IANA指定为特殊服务使用。

MQTT:1883/8883

  • 从49152-65535是动态或私有端口号。

(4)数据包封装和解封过程

6.网络配置

    1. ping ip地址/域名

查看当前主机和IP/域名所对应的这台主机网络是否联通

ping www.baidu.com

    1. ifconfig

在Linux查看当前主机的IP地址

ipconfig

在Windows上查看当前主机的IP地址

    1. 网络配置的步骤

1)虚拟机--》设置--》网络适配器---》桥接模式

2)编辑--》虚拟网络编辑器--》更改设置--》VMnet0---》桥接至--》当前PC正在上网的网卡上--》应用--》确定

3)修改网络配置文件

sudo vim /etc/network/interfaces

auto lo

iface lo inet loopback

auto ens33

iface ens33 inet dhcp

4)重启网络服务

sudo /etc/init.d/networking restart

  1. 测试

ping www.baidu.com

7.网络协议------UDP

UDP:传输层

用户数据报协议(User Datagram Protocol)

1)网络编程模型

B/S模型:browser/server(浏览器/服务器)

  1. 客户端是通用的客户端(浏览器)

  2. 一般只做服务器开发

  3. 客户端要加载的数据均来自服务器

C/S模型:client/server(客户端/服务端)

  1. 客户端是一个专用的客户端

  2. 服务器和客户端都需开发

  3. 客户端可保存资源,本地加载,无需所有数据都请求服务器