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

相关推荐
女神下凡8 小时前
芯参谋(95):嵌入式文件系统_开发指南
linux·服务器·arm开发·驱动开发·设计规范
@兽血沸腾8 小时前
Windows系统安装Jenkins部署应用至远程Windows服务器操作指南
运维·服务器·jenkins
且从容.11 小时前
Ubuntu安装flume
linux·ubuntu·flume
承渊政道12 小时前
Linux网络学习【Reactor反应堆模式】
linux·网络·学习·ubuntu·reactor
讯捷蓝达14 小时前
戴尔R720xd服务器卡死在 “Configuring Memory...Done“,换了内存还是卡?问题根本不在内存
运维·服务器
且从容.15 小时前
ubuntu安装flink
linux·ubuntu·flink
数字新视界16 小时前
动环监控信创适配在智能机房管理中的应用价值与未来展望
大数据·服务器·数据库·动环监控系统·动力与环境监控系统
爱和冰阔落16 小时前
【Linux网络】TCP 服务器如何并发处理多个客户端?从 fork、僵尸进程到双重 fork
linux·运维·服务器·网络
程序员沉梦听雨16 小时前
WSL2的安装与使用
linux·wsl
微小的鱼16 小时前
Linux的渲染与显示系统链路
android·java·linux