网络编程,网络协议,UDP协议

网络:

1.协议:通信双方约定的一套标准

2.国际网络通信协议标准:

1.OSI协议:

应用层 发送的数据内容

表示层 数据是否加密

会话层 是否建立会话连接

传输层 数据传输的方式

网络层 数据的路由

数据链路层 局域网内部通信

物理层 物理介质的连接

2.TCP/IP协议模型:

应用层 发送的数据内容

传输层 数据传输的方式

网络层 数据由一台主机到达另一台主机

网络接口层 物理介质连接

应用层:

FTP 文件传输协议

TFTP 简单文件传输协议

HTTP 超文本传输协议

HTTPS 安全超文本传输协议

SMTP 简单邮件传输协议

TELNET 网络终端登录协议

DNS 域名系统

..

传输层:

TCP 传输控制协议

UDP 用户数据报协议

UDP:不安全、不可靠的传输方式

UDP机制简单

UDP占用的资源开销比较小

TCP:安全、可靠的传输方式

TCP机制复杂

TCP占用的资源开销比较大

三次握手建立连接(客户端与服务器端) ,确认双方能够通信

通信过程中保障数据传输的完整性

四次挥手断开连接,确保数据传输的完整

网络层:

IPV4协议

IP地址

管理员IP地址形式:192.168.0.167

内存IP地址形式: 11000000.10101000.00000000.10100111

IP地址 = 网络位 + 主机位

网络位:IP地址所属的网段(局域网的编号)

主机位:局域网中的第几台主机

网段号:网络位不变,主机位全为0

广播号:网络位不变, 主机位全为1

子网掩码:每个IP地址都会搭配一个子网掩码,用来区分IP地址的网络位及主机位子网掩码展开成二进制,1对应的部分就是IP地址的网络位,0对应的部分就是IP地址的主机位

192.168.0.167

255.255.255.0

11000000.10101000.00000000.10100111

11111111.11111111.11111111.00000000

192.168.0.0

192.168.0.255

IP地址的划分:

公有地址

私有地址

A类:1.0.0.0 ~ 126.255.255.255

子网掩码:255.0.0.0

管理超大规模型网络 私有IP 10.0.0.0------10.255.255.255

B类:128.0.0.0 ~ 191.255.255.255

子网掩码:255.255.0.0

管理大中规模型网络

私有地址:172.16.0.0 - 172.31.255.255

C类:192.0.0.0 ~ 223.255.255.255

子网掩码:255.255.255.0

管理中小规模型网络

私有地址:192.168.0.0 ~ 192.168.255.255

D类:224.0.0.0 ~ 239.255.255.255

用于组播:255.255.255.0

E类:240.0.0.0 ~ 255.255.255.255

用于实验和研究:255.255.255.0

MAC地址:设备自带网卡的地址(该地址是唯一的)

端口号:找到同一台主机不同的应用程序

网络接口层通信方式:

网络接口层的主要功能包括:

1.将网络层的数据包封装成帧,准备发送到物理层。

2.通过物理媒介发送和接收数据帧。

3.实现数据链路层协议,如以太网协议等。

4.处理对传输介质的访问控制。

5.以及实现网络接口的配置和管理,如使用ifconfig命令查看和配置IP地址

3.命令:

1.ifconfig

2.将虚拟机IP地址设置为桥接模式:

1.点击"虚拟机"

2.点击"设置"

3.选择"网络适配器"

4.点击"桥接模式"

5.点击"确定"

3.将虚拟机桥接到无线网卡上去

1.点击"编辑"

2.点击"虚拟网络编辑器"

3.点击"更改设置"

4.已桥接至选择无线网卡

5.点击"确定"

4.修改网卡配置文件

1.sudo vim /etc/network/interfaces

2.修改文件内容为:

auto lo

iface lo inet loopback

auto ens33

iface ens33 inet dhcp

3.保存退出

:wq

4.重启网络服务

sudo /etc/init.d/networking restart

5.测试与局域网内其余IP地址是否能够连通

ping 192.168.0.167

ping www.baidu.com

4.UDP编程:

1.套接字:

实现Linux系统下的网络通信

套接字:一次通信对象的抽象

2.socket

int socket(int domain, int type, int protocol);
功能:
创建套接字

参数:

domain: AF_INET 表示IPV4协议

type:套接字类型

SOCK_STREAM:流式套接字

SOCK_DGRAM:数据报套接字

SOCK_RAW:原始套接字

protocol:

TCP和UDP协议:0

返回值:

成功返回用来通信的文件描述符

失败返回-1

3.sendto
ssize_t sendto(int sockfd, const void *buf, size_t len, int flags,
++const struct sockaddr *dest_addr++ , socklen_t addrlen);
功能:
发送信息

参数:

sockfd:套接字文件描述符

buf:发送数据空间首地址

len:发送数据长度

flags:发送属性 默认为0

dest_addr:目标地址存放空间首地址

addrlen:目的地址的长度

返回值:

成功返回发送字节数

失败返回-1

struct sockaddr_in {
sa_family_t sin_family; /* address family: AF_INET */
in_port_t sin_port; /* port in network byte order */
struct in_addr sin_addr; /* internet address */
};

/* Internet address. */

struct in_addr {

uint32_t s_addr; /* address in network byte order */

};

如果sendto对应的套接字没有绑定端口,则sendto绑定一个随机端口完成发送功能

4.inet_addr
in_addr_t inet_addr(const char *cp);
功能:
将字符串的IP地址转换为32位的地址类型

5.htons
uint16_t htons(uint16_t hostshort);

功能:

将本地字节序(小端)转换成网络大端字节序

6.bind
int bind(int sockfd, ++const struct sockaddr *addr++ , socklen_t addrlen);
功能:
将套接字与IP地址和端口进行绑定

参数:

addr:绑定地址结构体空间首地址

addrlen:绑定地址空间大小

返回值:

成功返回0

失败返回-1

注意:

只能绑定自己的IP地址

发送端流程: 1.创建套接字

2.发送信息

3.关闭套接字

接收端流程: 1.创建套接字

2.绑定IP和Port

3.接收信息

4.关闭套接字

7.recvfrom
ssize_t recvfrom(int sockfd, void *buf, size_t len, int flags,
struct sockaddr *src_addr, socklen_t *addrlen);
功能:
接收信息
参数:

sockfd:套接字文件描述符

buf:接收数据空间首地址

len:接收数据长度

flags:接收的属性 默认为0

src_addr:存放发送方地址空间的地址

addrlen: 要接收的发送方地址的长度

返回值:

成功返回实际接收字节数

失败返回-1

NAT: NAT是一种网络技术,用于将私有IP地址转换为公共IP地址,以便在互联网上进行通信。在NAT网络中,内部网络中的设备使用私有IP地址,这些地址通常是从RFC 1918中定义的地址块中分配的,以避免与公共IP地址冲突。NAT转换器(NAT router)是一种网络设备,它包含NAT功能,可以接收来自内部网络的数据包,并将其源IP地址和端口号转换为公共IP地址和端口号。这样,内部网络中的设备就可以通过NAT转换器与互联网上的其他设备进行通信。当外部网络中的设备尝试与内部网络中的设备通信时,NAT转换器会记录下原始的源IP地址和端口号,以便在返回的数据包中进行相应的转换。这种机制可以保护内部网络免受来自互联网的直接访问,提高网络安全性

作业:

1.自己实现发送端,从终端接收一个字符串发送给接收端

自己实现接收端,从网络中接收到一个字符串并打印

2.编写两个程序,一个发送端,一个接收端,实现一个文件跨主机的传输

相关推荐
一只很酸de橘子43 分钟前
关于https请求丢字符串导致收到报文解密失败问题
网络协议·http·https
潘yi.1 小时前
web技术与nginx网站环境部署
服务器·网络·nginx
Jtti2 小时前
Jtti:nginx服务器如何限制访问频率
服务器·网络·nginx
视觉&物联智能3 小时前
【杂谈】-人工智能驱动的网络安全威胁:新一代网络钓鱼
网络·人工智能·web安全·网络安全·安全威胁分析
学习溢出4 小时前
【网络安全】网络钓鱼的类型
网络·安全·网络安全·网络钓鱼·社会工程
帽儿山的枪手4 小时前
socket套接字你搞清楚了吗
网络协议·面试
KAXA_4 小时前
智能电网第5期 | 老旧电力设备智能化改造:协议转换与边缘计算
网络·硬件工程·信息与通信·智能电网
白山云北诗5 小时前
什么是 DDoS 攻击?高防 IP 如何有效防护?2025全面解析与方案推荐
网络协议·tcp/ip·ddos·高防ip·ddos攻击怎么防·高防ip是什么
mxbb.5 小时前
我的HTTP和HTTPS
网络协议·http·https
Zz_waiting.6 小时前
网络原理 - 10(HTTP/HTTPS - 1)
网络·http·https