http协议简述
Http协议知识点零碎知识Html:定义网页的文本
Http:在网络上传输HTML的协议,用于浏览器和服务器的通信
网页信息:\r\n表示换行,这点和常规的\n不同
tcp中传递响应头、响应body后,浏览器解析时从头到尾解析,遇到第一个空行则判定为剩下的部分全部为body
Http三次握手浏览器在给服务器传输数据之前,有三次握手,握手成功之后,才可以传输数据
浏览器需要先发送SYN码,客户端请求和服务器建立连接;
服务器接收到SYN码,再发送给客户端SYN+ACK码,我可以建立连接;服务端发送的ack码在原有的客户端发送数据的基础上+1
客户端接收到ACK码,验证这个ACK是否正确,如果正确则客户端和服务端则建立起数据连接;双方的数据发送通道都将开启;
Http四次挥手:1、当客户端无数据要传输了,会发送FIN码告诉服务器,我发送完毕了,此时会关闭客户端的数据发送通道。
2、当服务端接收完毕后,发送给客户端ACK码,
3、当服务器发送完毕之后,也会发送FIN码,告诉浏览器,数据发送完毕;告诉客户端你可以把数据接受通道关闭了,此时服务端会关闭数据接受通道;
4、当客户端接收完 ...
WSGI
知识点背景WSGI:用于牛逼的web服务器与网站程序进行交互的协议
交互原理
浏览器访问一个网站,此时会将用户的请求发送给web服务器,web服务器通过WSGI协议调用【应用程序框架】中的【application函数】,调用的同时web服务器会传递两个参数【environ】、【start_response】,其中【environ】是记录用户请求传递的函数信息(如请求页面,提交的验证信息),【start_response】是web服务器的Header和状态处理方法的引用,函数调用完毕以后,web服务器会获取到【响应头】信息,此时程序会继续回到【application】函数中继续处理用户的请求,处理完以后会返回【响应体】给web服务器,web服务器将header和body进行合并后返回给浏览器。
服务器交互123456789# 符合WSGI协议的服务器会要求Web开发者在程序中定义一个函数:application(environ, start_response)# environ:一个包含所有http请求信息的dict对象;# start_response:一个发送Http响应的函数def ...
多种方式实现服务器通信
Web服务器的实现知识点多进程实现并发服务器1234567891011121314151617181920212223242526272829303132333435363738394041424344# 利用多进程实现服务器并发,只是将客户端处理时的语句修改为多进程的即可,其它部分无变化import multiprocessingimport reimport socketdef client_socket(new_tcp_socket): request = new_tcp_socket.recv(2048).decode("utf-8").splitlines() request_page = re.match(r'.* /(.*) .*', request[0]).group(1) print(request_page) try: with open('./_book/' + request_page, 'rb') as f: page_c ...
网络通信知识
网络通信知识点2台电脑的通信
两台电脑之间通过网线链接是可以直接通信的,但是需要提前设置好IP地址(必须不同)和网络掩码,并且IP地址需要控制在同一个网段内才可以通信,如:192.168.3.1和192.168.3.2
tcp-ip协议(族):是一类协议的简称,tcp-ip协议上百种,但是常用的有tcp和IP协议,如下图所示(仅列举了部分TCP/IP各协议之间的关系):
应用层的协议是由应用程序自己规定的
网际层又称网络层,网络端口又称链路层
端口不可复用是指各协议中的各自端口不可复用,但是不同协议中可以端口复用,如udp和tcp中都可以同时使用8080端口
TCP/IP协议传输示意图:
网络传输过程中,不同层负责的任务也都不同,链路层只负责包装/验证mac地址,IP层只负责包装/验证IP,传输层只负责包装/验证是否是TCP/UDP,应用层只负责包装/验证具体是哪一个应用。接受数据的一方层层解析的过程中,只要发现任何一层不符合,则会将该包丢弃
OSI和TCP/IP协议对应关系(面试)
Wireshark抓包工具
x.x.x.255:表示的是广播地址,故其不可用 ...