Linux网络编程-网络基础概念(IP, UDP协议)

一. 网络编程

1.1 网络

**网络:**可以进行不同主机,进程间的通信

**主机一与主机二如何在网络上进行通信:**主机一与主机二在物理层面必须互联互通,主机一和主机

二在软件层面必须互联互通。

1.2 网络基础

1.2.1 网络协议

1、OSI 七层模型

OSI模型: open system interconnect----->理论模型,1977 国际标准化组织提出

这种模型可以使得各种不同体系结构的计算机能在世界范围内互联成网

组成:

应用层: 要传输的数据信息,如文件传输,电子邮件等

表示层: 数据加密。解密,压缩,解压缩

会话层: 建立数据传输通道

传输层: 传输的方式,UDP TCP 端口号

网络层: 实现数据路由 路由器(路由表) ip

数据链路层: 封装成帧,点对点通信(局域网内通信),差错校验,交换机 ARP

**物理层:**定义物理设备标准,网线,光纤 传输比特流

2、TCP/IP 四/五层模型

这是一种生成模型

4层模型

应用层(应用层、表示层、会话层):

HTTP:超文本传输协议

HTTPS:超文本传输协议(加密)

FTP :文件传输协议

TFTP:简单文件传输协议

MQTT:消息队列遥测传输协议(物联网)

自定义协议

传输层:

UDP:用户数据报协议

TCP:传输控制协议

网络层:

IP协议

IPv4/IPv6

网络接口层(数据链路层、物理层):

ARP:地址解析协议(IP地址转MAC地址)

RARP:逆地址解析协议(MAC地址转IP地址)

5层模型

应用层(应用层、表示层、会话层)

传输层

网络层

数据链路层

物理层

1.3 其他概念

交换机可以实现小范围的通信----局域网

区分主机---ip地址

广域网:中有许多路由器

路由器:完成局域网之间的通信

端口号:区分网络进程

ip地址:区分主机,软件地址,可以改变

mac地址:用来区分主机,硬件地址,局域网内使用,不可变

二. IP协议

2.1 IP地址

ip地址: 区分主机,软件地址,可以改变

**mac地址:**用来区分主机,硬件地址,局域网内使用,不可变

**ip地址的格式:**点分十进制:eg:192.168.0.182

ipv4:就是用一个4字节(32位)的整型来保存地址

ipv6:128位保存ip地址,解决ip地址不够用的问题

**ip地址的组成:**网络位+主机位

如何区分一个IP地址的网络位与主机位,就要用到子网掩码

**子网掩码:**类似255.255.255.0这样的格式 二进制形式(1111 1111 1111 1111 1111 1111 0000

**网络位:**表示当前主机所在的网段。子网掩码为1的位为网络位

**主机位:**是当前网段的第几台主机。子网掩码为0的位为主机位

2.2 几个特殊的IP地址

2.2.1 网段号

IP地址网络位不变,主机位全为0,则为该IP地址的网段号

eg:ip地址:192.168.0.182 子网掩码:255.255.255.0

则位于192.168.0.0这个网段内---->网段内的IP能直接通信

2.2.2 广播号

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

eg:ip地址:192.168.0.182 子网掩码:255.255.255.0

则位于192.168.0.255为广播号---->向广播号发送信息,所有局域网内IP都能收到此信息

2.2.3 网关地址

表示网段内的第一台主机192.168.0.1----->一般是路由器

2.3 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.02^16管理大中规模网络

私有IP地址:172.16.0.0 - 172.31.255.255

(3)C类地址:

范围:192.0.0.0 - 223.255.255.255子网掩码:255.255.255.02A8管理中小规模网络

私有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地址

三. 端口号

端口号:区分同意主机上的不同网络进程

16位的数值 0-65535

分类:

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

http: 80、8080

FTP:20/21

TFPT: 69

HTTPS: 443

MQTT :1883

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

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

四. 网络协议栈

报文,端口号:传输层

数据包,ip地址:网络层

帧,校验:数据链路层,mac地址

交换机看mac地址进行转发

比特流:物理层

整个网络传输过程都在不停的封装与解封

五. UDP 协议

UDP是传输层协议

UDP(user datagram protocol) :用户数据报协议

网络编程模型

C/S:client/server

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

客户端,服务端的程序都需要实现

客户端和服务端都可以保存资源

B/S:browser/server

客户端是一个通用的客户端,只需维护服务端

一般使用http协议

主要资源都在服务端

编程流程:

发送端,客户端:

创建套接字:socket

套接字:为应用层提供网络通信的端口,本质是一个文件描述符

sendto

recvfrom

关闭套接字:close

服务端

比客户端多一个步骤

bind:绑定自己的ip地址与端口号

相关推荐
shushangyun_1 小时前
汽车服务行业B2B平台+AI解决方案哪家专业:2026年最新测评
java·运维·网络·数据库·人工智能·汽车
一RTOS一1 小时前
东土科技:智能制造系统高性能工业网络解决方案揭榜挂帅项目正式验收达标
网络·科技·制造
森G2 小时前
64、完善聊天室程序(TLV拓展)---------网络编程
网络·c++·tcp/ip
小易撩挨踢2 小时前
[特殊字符] Linux 7.1 内核正式发布:距 7.0 仅 9 周,新 CPU/GPU/文件系统全面升级
linux·运维
专业机床数据采集2 小时前
基于 Wireshark 抓包逆向设备通信协议,并用 C# UDP协议跨平台 实现宝元数控程序列表读取、上传、下载和删除
网络·测试工具·wireshark·程序传输·宝元数控·dnc·数控程序传输
vortex52 小时前
Linux进程权限继承研究:从setuid()到exec()与system()的行为差异
linux·服务器·系统安全·suid
信也科技布道师3 小时前
从Istio 503 NC 错误深入理解 Mesh 路由全链路原理
java·服务器·网络