---恢复内容开始---
网络编程内容一周的总结
(重点)粘包 : 就是因为接收端不知道如何接收数据,造成接收数据的混乱的问题
只发生在tcp协议上. 因为tcp协议的特点是面向数据流形式的传输
粘包的发生主要是因为tcp协议有两个机制: 合包机制(nagle算法),拆包机制
subprocess 模块 有一个方法可以执行系统命令 Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
struct 模块 有一个方法可以将21.3E以内的数据,打包成4个长度的bytes
r = struct.pack('i',num)
struct.unpack('i',r)
只发生在tcp协议上. 因为tcp协议的特点是面向数据流形式的传输
粘包的发生主要是因为tcp协议有两个机制: 合包机制(nagle算法),拆包机制
subprocess 模块 有一个方法可以执行系统命令 Popen(cmd,shell=True,stdout=subprocess.PIPE,stderr=subprocess.PIPE)
struct 模块 有一个方法可以将21.3E以内的数据,打包成4个长度的bytes
r = struct.pack('i',num)
struct.unpack('i',r)
(重点)架构: C/S架构 B/S架构(优点:统一了应用的接口)
多台电脑通信 : 交换机+路由器
mac地址: 物理地址,全球唯一 身份证号
ip地址 : 虚拟地址,四位点分十进制 学号
(重点)如何判断两台主机是否在同一个局域网?
ip地址 & 子网掩码 = 网段
(重点)arp协议: 通过目标ip地址,获取目标mac地址
端口:操作系统给予,通过端口号,可以确定某一个应用程序
(重点)ip+端口:唯一确定某一个主机上的某一个应用程序
回环地址:127.0.0.1
osi五层模型:
应用层 py文件,应用
传输层 tcp/udp协议
网络层 ip协议
数据链路层 arp协议,网卡
物理层 网线,集线器,光纤
(重点)tcp协议:安全,可靠,面向连接,面向数据流形式的传输
三次握手:
(面试回答)
首先,必须先由客户端发起连接的请求
接下来,服务器接收到请求之后,回复给客户端两个标识,一个syn表示
服务器接收到请求,一个ack表示服务器在做准备工作,两个标识一起
回复给客户端
最后,客户端接收到服务器的回复,客户端准备连接的所有资源,开始进行连接
发送给服务器一个ack表示客户端的连接准备工作已经完成
(此时表示客户端和服务器可以相互连接了)
如果面试官问你,哪句代码体现了三次握手?
回答: 服务器端的accept,客户端connect
四次挥手:
(面试回答)
(1)首先由连接双方任意一方发起断开连接的请求,发起方发送的请求表示
是我没有数据要继续发送了,可以断开连接了,但是你如果还有数据可以继续向我发送数据.
(2)接收方回复给发起方,表示接到了发起放的断开请求,开始着手准备断开事宜
(3)接收方准备完成后,给发起方发送一个标识,表示接受方没有数据继续发送了
可以断开连接了
(4)发起方接收到消息后,准备断开连接,回收资源
如果面试官问你,哪句代码体现了四次挥手?
回答: close()
(重点)udp协议:快. 不安全,不可靠,不面向连接,面向数据包形式的传输
多台电脑通信 : 交换机+路由器
mac地址: 物理地址,全球唯一 身份证号
ip地址 : 虚拟地址,四位点分十进制 学号
(重点)如何判断两台主机是否在同一个局域网?
ip地址 & 子网掩码 = 网段
(重点)arp协议: 通过目标ip地址,获取目标mac地址
端口:操作系统给予,通过端口号,可以确定某一个应用程序
(重点)ip+端口:唯一确定某一个主机上的某一个应用程序
回环地址:127.0.0.1
osi五层模型:
应用层 py文件,应用
传输层 tcp/udp协议
网络层 ip协议
数据链路层 arp协议,网卡
物理层 网线,集线器,光纤
(重点)tcp协议:安全,可靠,面向连接,面向数据流形式的传输
三次握手:
(面试回答)
首先,必须先由客户端发起连接的请求
接下来,服务器接收到请求之后,回复给客户端两个标识,一个syn表示
服务器接收到请求,一个ack表示服务器在做准备工作,两个标识一起
回复给客户端
最后,客户端接收到服务器的回复,客户端准备连接的所有资源,开始进行连接
发送给服务器一个ack表示客户端的连接准备工作已经完成
(此时表示客户端和服务器可以相互连接了)
如果面试官问你,哪句代码体现了三次握手?
回答: 服务器端的accept,客户端connect
四次挥手:
(面试回答)
(1)首先由连接双方任意一方发起断开连接的请求,发起方发送的请求表示
是我没有数据要继续发送了,可以断开连接了,但是你如果还有数据可以继续向我发送数据.
(2)接收方回复给发起方,表示接到了发起放的断开请求,开始着手准备断开事宜
(3)接收方准备完成后,给发起方发送一个标识,表示接受方没有数据继续发送了
可以断开连接了
(4)发起方接收到消息后,准备断开连接,回收资源
如果面试官问你,哪句代码体现了四次挥手?
回答: close()
(重点)udp协议:快. 不安全,不可靠,不面向连接,面向数据包形式的传输
今日内容
1 介绍socket模块中一些其他常用方法
send 和 sendall 的区别:
对于程序员来说,用起来是没有什么区别的
实际上,在socket底层对于两个方法的封装有却别:
send(num) 此方法会尝试先发送n个数据(n<num),接下来再尝试发送num-n
sendall(num) 此方法会尝试一次性将num个数据发送出去
send 和 sendall 的区别:
对于程序员来说,用起来是没有什么区别的
实际上,在socket底层对于两个方法的封装有却别:
send(num) 此方法会尝试先发送n个数据(n<num),接下来再尝试发送num-n
sendall(num) 此方法会尝试一次性将num个数据发送出去
(重点)setblocking(True) 阻塞
setblocking(False) 非阻塞
settimeout(int) 针对阻塞状态,设置一个延时等待
gettimeout() 获得延时的时间
---恢复内容结束---