传输层: 端口号

Tcp协议:面向连接,数据可靠,传输效率低,面向字节流

 

Udp协议:面向无连接,数据不可靠,传输效率高,面向报文

 

Tcpudp协议下的socket

 

Tcp长连接的一些问题

 

 

缓冲区:  将程序和网络解耦

输入缓冲区

输出缓冲区

 

Import Subprocess

    sub_obj = subprocess.Popen(

        ‘dir’,

        shell=True,

        stdout=subprocess.PIPE,  #正确结果的存放位置

        stderr=subprocess.PIPE   #错误结果的存放位置

    )

 

两种黏包现象:

1 连续的小包可能会被优化算法给组合到一起进行发送

2 第一次如果发送的数据大小2000B接收端一次性接受大小为1024,这就导致剩下的内容会被下一次recv接收到,导致结果错乱

 

方案一:由于双方不知道对方发送数据的长度,导致接收的时候,可能接收不全,或者多接收另外一次发送的信息内容,所以在发送真实数据之前,要先发送数据的长度,接收端根据长度来接收后面的真实数据,但是双方有一个交互确认的过程

 

方案二:

Struct模块,

打包:struct.pack(‘i’,长度)

解包:struct.unpack(‘i’,字节)

 

打印进度条