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

本章目录

  • 一、基础概念
    • 1、TCP/IP
    • 2、首要问题:实现寻址
    • 3、域名DNS
    • 4、使用客户/服务器模式
    • 5、服务器的端口号
    • 6、客户端的端口号
    • 7、UDP
    • 8、选择TCP还是UDP
    • 9、Internet,物理传输,路由
    • 10、总结
  • 二、网络客户端
    • 1、Socket
    • 2、建立socket
    • 3、寻找端口号
    • 4、从socket获取信息
    • 5、处理错误
    • 6、Socket异常
    • 7、4种异常
    • 8、总结
  • 三、网络服务器
    • 1、特点
    • 2、准备连接
    • 3、使用UDP
    • 4、死锁的发生
    • 5、避免死锁
    • 6、总结
  • 四、域名系统(DNS)
    • 1、定义
    • 2、进行DNS查询
      • (1)本地解析
      • (2)直接解析
      • (3)递归解析
      • (4)迭代解析
    • 3、防止反向查询欺骗
    • 4、总结

一、基础概念

1、TCP/IP

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

Python网络编程基础【底层网络】_第1张图片

2、首要问题:实现寻址

Python网络编程基础【底层网络】_第2张图片

3、域名DNS

Python网络编程基础【底层网络】_第3张图片

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

Python网络编程基础【底层网络】_第4张图片

5、服务器的端口号

Python网络编程基础【底层网络】_第5张图片

6、客户端的端口号

Python网络编程基础【底层网络】_第6张图片

7、UDP

Python网络编程基础【底层网络】_第7张图片

8、选择TCP还是UDP

Python网络编程基础【底层网络】_第8张图片
Python网络编程基础【底层网络】_第9张图片

9、Internet,物理传输,路由

Python网络编程基础【底层网络】_第10张图片

10、总结

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

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

二、网络客户端

1、Socket

Python网络编程基础【底层网络】_第11张图片

2、建立socket

Python网络编程基础【底层网络】_第12张图片

3、寻找端口号

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

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

4、从socket获取信息

Python网络编程基础【底层网络】_第13张图片

5、处理错误

Python网络编程基础【底层网络】_第14张图片

6、Socket异常

Python网络编程基础【底层网络】_第15张图片

7、4种异常

Python网络编程基础【底层网络】_第16张图片

8、总结

网络通信的基本接口:socket

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

三、网络服务器

1、特点

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

2、准备连接

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

3、使用UDP

Python网络编程基础【底层网络】_第17张图片

4、死锁的发生

Python网络编程基础【底层网络】_第18张图片

5、避免死锁

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

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

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

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

6、总结

Python网络编程基础【底层网络】_第19张图片

四、域名系统(DNS)

1、定义

Python网络编程基础【底层网络】_第20张图片

2、进行DNS查询

(1)本地解析

Python网络编程基础【底层网络】_第21张图片

(2)直接解析

Python网络编程基础【底层网络】_第22张图片

(3)递归解析

Python网络编程基础【底层网络】_第23张图片

(4)迭代解析

Python网络编程基础【底层网络】_第24张图片

3、防止反向查询欺骗

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

4、总结

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

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

反向查询把IP地址翻译成主机名。

你可能感兴趣的:(Python网络编程基础【底层网络】)