Python网络编程基础【底层网络】

举报
振华OPPO 发表于 2022/04/20 22:15:40 2022/04/20
【摘要】 @TOC 一、基础概念 1、TCP/IPTCP/IP是标准的协议,使得世界范围内的计算机通过Internet或本地的网络通信。 2、首要问题:实现寻址 3、域名DNS 4、使用客户/服务器模式 5、服务器的端口号 6、客户端的端口号 7、UDP 8、选择TCP还是UDP 9、Internet,物理传输,路由 10、总结TCP/IP协议可以用于多种不同的传输,如以太网和移动网络。每个终端靠唯一...

@TOC

一、基础概念

1、TCP/IP

TCP/IP是标准的协议,使得世界范围内的计算机通过Internet或本地的网络通信。

在这里插入图片描述

2、首要问题:实现寻址

在这里插入图片描述

3、域名DNS

在这里插入图片描述

4、使用客户/服务器模式

在这里插入图片描述

5、服务器的端口号

在这里插入图片描述

6、客户端的端口号

在这里插入图片描述

7、UDP

在这里插入图片描述

8、选择TCP还是UDP

在这里插入图片描述
在这里插入图片描述

9、Internet,物理传输,路由

在这里插入图片描述

10、总结

TCP/IP协议可以用于多种不同的传输,如以太网和移动网络。
每个终端靠唯一的IP地址和端口号来区分。
服务器通过一些事先知道的端口来侦听连接。
数据传输协议

TCP:可以提供可靠性和完整的会话;
UDP:用于小并且简短但快速的会话。

二、网络客户端

1、Socket

在这里插入图片描述

2、建立socket

在这里插入图片描述

3、寻找端口号

问题:查询一个服务器端口号的列表

实例:http转换为一个端口号,你用协议名和端口名

4、从socket获取信息

在这里插入图片描述

5、处理错误

在这里插入图片描述

6、Socket异常

在这里插入图片描述

7、4种异常

在这里插入图片描述

8、总结

网络通信的基本接口:socket

socket()建立socket
connect()建立连接

三、网络服务器

1、特点

等待来自客户端的请求,发送应答。

2、准备连接

建立socket对象
设置socket选项(可选)
绑定到一个端口/一个指定的网卡
侦听连接

3、使用UDP

在这里插入图片描述

4、死锁的发生

在这里插入图片描述

5、避免死锁

死锁发生在一个服务器和客户端同时试图往一个连接上写东西和同时从一个连接上读的时候。

确保客户端每次执行完send()后,进行一次recv()。

使客户端发送较少的数据。

使用多线程等,使客户端同时发送和接收。

6、总结

在这里插入图片描述

四、域名系统(DNS)

1、定义

在这里插入图片描述

2、进行DNS查询

(1)本地解析

在这里插入图片描述

(2)直接解析

在这里插入图片描述

(3)递归解析

在这里插入图片描述

(4)迭代解析

在这里插入图片描述

3、防止反向查询欺骗

先进行反向查询,你将根据IP地址得到一个域名。再根据这个域名进行一次正向查询。
如果正常,则第1步得到的IP地址应该在正向查询得到列表上。否则,就是有人在提供伪造的反向查询信息。

4、总结

DNS用于在文字名称和底层通信的IP地址之间转换。

标准(正向)查询把文字翻译成数字类型的IP地址。

反向查询把IP地址翻译成主机名。
【版权声明】本文为华为云社区用户原创内容,转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息, 否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。