七、python高级:网络通信

一、网络通信

1、早期的计算机网络,都是由各厂商自己规定一套协议,IBM、Apple和Microsoft都有各自的网络协议,互不兼容,为了把全世界的所有不同类型的计算机都连接起来,就必须规定一套全球通用的协议,为了实现互联网这个目标,互联网协议簇(Internet Protocol Suite)就是通用协议标准,因为互联网协议包含了上百种协议标准,但是最重要的两个协议是TCP和IP协议,所以,大家把互联网的协议简称TCP/IP协议

2、端口号:端口是通过端口号来标记的,端口号只有整数,范围是从0到65535

3、动态端口:动态端口的范围是从1024到65535,之所以称为动态端口,是因为它一般不固定分配某种服务,而是动态分配。动态分配是指当一个系统进程或应用程序进程需要网络通信时,它向主机申请一个端口,主机从可用的端口号中分配一个供它使用。当这个进程关闭时,同时也就释放了所占用的端口号

4、客户端与服务端架构(c/s架构)

什么是客户端/服务器架构?总的来说,某一个特定的对象,并没有严格的客户端或者服务器之分,区分的标准在于,在实现网络通信的过程中,该对象的行为模式决定了它是客户端还是服务端。

服务器:为一个或者多个客户端(用户)提供所需“服务"的一系列硬件或者软件。工作流程可以简单概括为:等待请求、响应并提供服务、等待下一个请求。

客户端:因特定请求而联系服务器,接收服务并处理相关事务的一方。客户端可以持续向服务器发送请求,也可以在结束事务请求后不再发出请求。

 

二、socket

1、socket(简称 套接字) 是进程间通信的一种方式,它与其他进程间通信的一个主要不同是:它能实现不同主机间的进程间通信,我们网络上各种各样的服务大多都是基于 Socket 来完成通信的

2、使用socket 模块的函数 socket( ) 就可以完成创建套接字

socket.socket( AddressFamily, Type)

3、函数 socket.socket 创建一个 socket,返回该 socket 的描述符,该函数带有两个参数:

Address Family:可以选择 AF_INET(用于 Internet 进程间通信) 或者 AF_UNIX(用于同一台机器进程间通信),实际工作中常用AF_INET

Type:套接字类型,可以是 SOCK_STREAM(流式套接字,主要用于 TCP 协议)或者 SOCK_DGRAM(数据报套接字,主要用于 UDP 协议)

 

三、面向连接的套接字(TCP)与无连接的套接字(UDP)

1、 TCP也称为虚拟电路或流套接字。主要提供序列化的、可靠的、不重复的数据,它可以将消息拆分成多个片段,确保每一条片段都顺利到达目的地,然后按照顺序组合在一起,最后将完整的消息传递给正在等待的应用程序。实现的主要协议是传输控制协议(TCP)。创建TCP套接字时,必须使用SOCK_STREAM作为套接字类型

2、UDP又称为数据报类型的套接字。在传输过程中无法保证其顺序性、可靠性、重复性,事实上所发送的报文有可能最后并没有到达,也有可能存在重复的消息。 我们之所以还继续使用数据报,这是相对于面向连接的套接字来看的。由于维护TCP连接需要大量的开销,发送数据报能够保证成本更加”低廉“,所以通常能提供更好的性能,并且可能更适合某一些类型的应用程序,实现的主要协议是用户数据报协议(UDP)。创建UDP套接字,必须使用SOCK_DGRAM作为套接字类型。

 

四、UDP

 

五、TCP

1、客户端

2、服务端

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值