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地址与端口号

相关推荐
圆圆讲门店4 小时前
挑选同城获客服务机构时需要考量的核心因素都有哪些?
大数据·网络·人工智能·python
筝筝ba5 小时前
openBMC功耗封顶GUI测试
服务器
制造业的搬运工5 小时前
扫地机器人主板 PCB 选型:深圳线路板与普通板的 8 项工艺指标对比与参数清单
网络·科技·制造·科普·pcb工艺
顺顺 尼5 小时前
linux 进程信号(上)
linux·c++·算法
niuTaylor6 小时前
飞腾 FT-2000/4 Ubuntu 内存卡 / NVMe SSD 系统制作完整指南
linux·服务器·人工智能·驱动开发·单片机
傲世仙尊7 小时前
信号量环形队列与线程池起步-把临界资源拆成很多份
linux
Huangjin007_7 小时前
【Linux 系统篇(二十五)】文件(二) 系统文件I/O详解
linux·运维·服务器
XiaoMaqqqq7 小时前
目前知名的IP驱动产业新场景新工具有哪些
网络·python·网络协议·tcp/ip
李永奉7 小时前
中科蓝讯SDK开发-BT897X、BT891X、AB573X、AB572X 系列 触摸按键提示音功能实现
网络·单片机·嵌入式硬件·mcu·物联网
ShineWinsu7 小时前
对于ProtoBuffer:ProtoBuffer的介绍以及安装
linux·网络·google·协议·序列化·反序列化·protobuffer