Python网络编程

19.1 网络基础

19.1.1 计算机网络

计算机网络,是指将地理位置不同的具有独立功能的多台计算机及其外部设备,通过通信线路连接起来,从而实现信息与资源共享的计算机系统。
网络分为如下的七层结构:

  • 物理层: 将数据转换为可通过物理介质传送的电子信号 相当于邮局中的搬运工人。
  • 数据链路层: 决定访问网络介质的方式。
    在此层将数据分帧,并处理流控制。本层指定拓扑结构并提供硬件寻址,相当于邮局中的装* 拆箱工人。
  • 网络层: 使用权数据路由经过大型网络 相当于邮局中的排序工人。
  • 传输层: 提供终端到终端的可靠连接 相当于公司中跑邮局的送信职员。
  • 会话层: 允许用户使用简单易记的名称建立连接 相当于公司中收寄信、写信封与拆信封的秘书。
  • 表示层: 协商数据交换格式 相当公司中简报老板、替老板写信的助理。
  • 应用层: 用户的应用程序和网络之间的接口老板。

19.1.2 计算机通讯协议

计算机网络中的计算机可以相互间进行信息交流。而要进行交流,就需要具有一定的规则,我们称之为通讯协议。可以认为,协议就是一种规范。
相关协议:

  • HTTP(HyperText Transfer Protocol )超文本传输协议
  • IP(Internet Protocol)互联网协议
  • TCP(Transmission Control Protocol)传输控制协议
  • UDP(User Datagram Protocol)用户数据报协议
  • FTP(File Transfer Protocol)文件传输协议

TCP/IP协议经常放在一起使用。在TCP/IP协议下,网络通常也分成如下五层的结构:

  • 物理层(RS-232、V.35)和 数据链路层(HDLC、X.25)涉及到在通信信道上传输的原始比特流,它实现传输数据所需要的机械、电气、功能性及过程等手段,提供检错、纠错、同步等措施,使之对网络层显现一条无错线路;并且进行流量调控。Bits、Frames

  • 网络层检查网络拓扑,以决定传输报文的最佳路由,执行数据转发。其关键问题是确定数据包从源端到目的端如何选择路由。网络层的主要协议有IP、ICMP(Internet Control Message Protocol,互联网控制报文协议)、IGMP(Internet Group Management Protocol,互联网组管理协议)、ARP(Address Resolution Protocol,地址解析协议)和RARP(Reverse Address Resolution Protocol,反向地址解析协议)等。Packets

  • 传输层的基本功能是为两台主机间的应用程序提供端到端的通信。传输层从应用层接受数据,并且在必要的时候把它分成较小的单元,传递给网络层,并确保到达对方的各段信息正确无误。传输层的主要协议有TCP、UDP(User Datagraph Protocol,用户数据报协议)。Segments

  • 应用层负责处理特定的应用程序细节。应用层显示接收到的信息,把用户的数据发送到低层,为应用软件提供网络接口。应用层 包含大量常用的应用程序,例如HTTP(HyperText Transfer Protocol文本传输协议)、Telnet(远程登录)、FTP(File Transfer Protocol)等。

TCP与UDP协议:

  • TCP协议是基于连接的协议,该协议提供点对点的通道,在两台计算机设备间进行可靠的数据传输。TCP协议保证一方发送的数据可以准确的被另一方接收,并且接收数据的顺序与发送的顺序一致。(HTTP,FTP)
  • UDP协议是基于数据报的协议(不是基于连接的协议),该协议发送独立的数据报(数据包),各个数据报之间不受影响。UDP协议不保证接收端一定会接收到发送端发送的数据报,同时,也不保证接收数据报的顺序与发送的顺序一致。(ping)

19.1.3. IP地址与端口号

在计算机网络中,可能会存在多台计算机,我们使用IP地址来区分每台计算机。可以认为,IP地址就是每台计算机在计算机网络中的唯一标识。IP地址使用32位数据来表示。我们习惯上将IP地址分为4段,每段8位。(0~255)
端口号用来标识不同的程序。端口号使用16位数据来表示。(065535)其中,01023端口被常用的系统服务所占用。我们使用的服务不应使用这些端口。
数据传输时,会携带IP地址与端口号信息。其中,IP地址用来识别数据传输到哪台计算机,而端口号用来识别,传输到计算机的哪个应用程序。

19.2. URL

19.2.1. 基本组成

URL(Uniform Resource Locator)统一资源定位,为一个字符串序列,引用网络上的一个资源地址,该地址可以是文件,目录,数据库查询等。
URL分为两个部分:(二者使用://进行分隔)

  • 协议标识符 使用哪种协议获取相关资源
  • 资源名称 资源的详细地址

例如:http://www.somewebsite.com
其中,资源名称的格式取决于所使用的协议,大部分协议的格式如下:

  • 主机名称
  • 文件名称(路径)
  • 端口号
  • 相关引用

例如:http://127.0.0.1:8080/index.html#bak

说明:通常主机名称与文件名称是必须的,而端口号与相关引用是可选的

19.2.2 解析URL

我们可以通过urlparse函数来对指定的URL进行解析,结果分为六部分:

  • 协议
  • 网络地址
  • 路径
  • 路径参数
  • 查询参数
  • 引用片段
    函数返回ParseResult类型的对象(元组的子类型),我们可以通过索引(或者属性名)来访问对应的部分。

19.2.3 发起请求

我们可以向指定的URL发送请求,获得服务端的回应信息。
访问本地资源。
下载指定的URL资源。

19.3 TCP

网络上的两个程序建立双向的通讯连接,这个连接的一端称为一个socket,每个socket会绑定一个特定的端口号。客户端与服务端通过socket进行数据读取与写入。
我们可以使用socket模块提供的功能,来实现TCP与UDP协议下的网络通讯。

19.4. UDP

数据报是相互独立的信息,通过网络发送。对于接收端,是否能接收,接收时间,接收的顺序都是不确定的。

19.5. 协程

协程是比线程更小的执行单元。比起线程,协程的切换更加简单容易,减少性能消耗。
之前学习的生成器,就可以实现协程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值