Python网络编程
文章平均质量分 70
TCP协议、UDP协议、黏包问题
敲代码敲到头发茂密
欲戴王冠,必承其重
展开
-
计算机网络常见面试题汇总(建议收藏)
CSRF,跨站请求伪造(英文全称是Cross-site requestforgery),是一种挟制用户在当前已登录的Web应用程序上执行非本意的操作的攻击方法。Django预防CSRF攻击的方法是在用户提交的表单中加入一个csrftoken的隐含值,这个值和服务器中保存的csrftoken的值相同,这样做的原理如下:1、在用户访问django的可信站点时,django反馈给用户的表单中有一个隐含字段csrftoken,这个值是在服务器端随机生成的,每一次提交表单都会生成不同的值。原创 2022-10-01 16:21:28 · 4781 阅读 · 59 评论 -
计算机网络知识等汇总补充
注意:这时服务器到客户端的TCP连接并未被释放,客户端需要经过等待2MSL(MSL表示一个报文的来回时间)后才会进入CLOSED状态,这样做的目的是确保服务器收到自己的ACK报文,如果在规定时间没有收到客户端发的ACK,那么服务器会重发FIN,客户端再次收到FIN报文,就知道自己的ACK丢了,然后会重发ACK给服务器。2、第一次挥手:客户端向服务器发送FIN报文,发完进入FIN_WAIT_1状态,即主动关闭TCP连接,不再发送数据,但是可以接收服务器发来的报文,等待服务器回复。redis你使用的场景。原创 2024-04-11 23:43:55 · 1341 阅读 · 27 评论 -
python网络编程—TCP协议(二)
一、TCP协议的原理图每个客户端与服务端通讯是互不干扰的二、注意点1、tcp服务器─般情况下都需要绑定,否则客户端找不到这个服务器2、tcp客户端一般不绑定,因为是主动链接服务器,所以只要确定好服务器的ip、port等信息就好3、tcp服务器中通过listen可以将socket创建出来的主动套接字变为被动的,这是做tcp服务器时必须要做的4、当一个tcp客户端连接服务器时,服务器端会有1个新的套接字,这个套接字用来标记这个客户端,单独为这个客户端服务5、listen后的套接字是被动套接字,用原创 2021-10-19 07:15:00 · 373 阅读 · 0 评论 -
python网络编程—UDP的echo服务
一、echo服务echo服务是一种非常有用的用于调试和检测的工具,该协议接收到什么原样返回客户端二、代码实现echo服务需求 UDP客户端、客户端可以发送多条数据,2、客户端如果发送一个”exit“则表示客户端退出,客户端销毁套接字,不占用资源,3、服务器端收到什么就返回什么客户端发送一个请求也需要端口,端口是随机分配的,创建一个UDP协议的套接字,然后发送一条数据到网络上的另外一个进程服务端from socket import *# UDP客户端、创建一个服务器端的Socketsocke原创 2021-10-19 07:00:00 · 1037 阅读 · 0 评论 -
python网络编程—UDP协议
一、UDP协议特点:UDP是面向无连接的通讯协议,UDP数据包括目的端口号和源端口号信息,由于通讯不需要连接,所以可以实现广播发送。UDP传输数据时有大小限制,每个被传输的数据报必须限定在64KB之内。UDP是一个不可靠的协议,发送方所发送的数据报并不—定以相同的次序到达接收方。二、实用情况UDP是面向消息的协议,通信时不需要建立连接,数据的传输自然是不可靠的,UDP一般用于多点通信和实时的数据业务,比如语音广播视频QQTFTP(简单文件传送)SNMP(简单网络管理协议)RIP(路由信息协原创 2021-10-20 07:00:00 · 5346 阅读 · 0 评论 -
TCP模拟QQ聊天案例
服务器端:from socket import *server_socket=socket(AF_INET,SOCK_STREAM)server_socket.bind(('',8008))#todo 监听服务器的socket,listen让socket处于被动。就可以接收客户端的连接请求了server_socket.listen(1)while True: #todo 4、等待客户端的连接请求, 当前函数是线程阻塞的函数,accept返回2个值,第一个:新的socket,第二个:原创 2021-10-18 07:00:00 · 547 阅读 · 0 评论 -
网络收发数据中涉及的黏包问题及解决办法
一、什么是黏包:粘包指的是数据和数据之间没有明确的分界线,导致不能正确读取数据应用程序无法直接操作硬件,应用程序想要发送数据则必须将数据交给操作系统,而操作系统需要同时为所有应用程序提供数据传输服务,也就意味着,操作系统不可能立马就能将应用程序的数据发送出去,就需要为应用程序提供一个缓冲区,用于临时存放数据,具体流程如下:这意味着UDP根本不会粘包,但是会丢数据,不可靠。意味着: TCP传输数据是可靠的,但是会粘包。二、用代码说明黏包问题(发送方出现的粘包问题):服务器端:from soc原创 2021-10-17 07:00:00 · 3517 阅读 · 0 评论 -
python网络编程—TCP协议(一)
客户端发送请求,用send不用sendto,客户端知道服务器的ip和端口,服务器也知道客户端的端口和ip,因为是面向连接的。等待客户端的连接请求,当前函数是线程阻塞的函数,accept返回2个值,第一个:新的socket,第二个:客户端地址,创建目标服务器,绑定一个IP和端口 服务器里面空的字符串代表server_socket绑定这台机器下的任何ip地址。新创建的socket是server_socket中的子socket,只是和当前的客户端(一个客户端)收发数据。原创 2021-10-17 07:15:00 · 4273 阅读 · 0 评论 -
python网络编程—Socket
socket:英文原义是”孔“或者”插座“,网络上的俩个程序通过一个双向的通信连接实现数据的交换。简称套接字,是进程间通讯的一种方式,他与其他进程间通讯的一个主要不同是:它能实现不同主机间进程间通讯,我们网络上各种各样的服务大多是基于Socket来完成通讯的,例如我们每天浏览网页、QQ聊天等等。1、首要解决的问题是如何标识一个唯一的进程,否则通信无从谈起!特点:客户端发送一句话就关闭了,服务器接收一句话也就关闭了。,网络中的进程通信就可以利用这个标志与其它进程进行交互。原创 2021-10-16 06:15:00 · 841 阅读 · 0 评论