CS架构:client -> server html
BS架构:browser -> servershell
相互通讯的本质发送的是字节(01)浏览器
交换机的做用:为接入的网络节点提供电信号通路服务器
路由器:连通不一样的网络,另外一个做用是选择信息传送的线路网络
经过在cmd中输入ipconfig查看本身的内网ip,公网ip须要租服务器架构
socket模块socket
一般一次的数据发送与接收的最大限度是1024字节,可是当超过这个限度时,这次的数据传送只包含1024字节,剩下的内容并无丢失,当下次数据发送来时,就会发送上次超过限度的数据,依次向后延送,这就是黏包.ide
同时执行多条命令以后,获得的结果极可能只有一部分,在执行其余命令的时候又接收到以前执行的另一部分结果,这种显现就是黏包。网站
import struct import subprocess import socket print("server link start ...") server = socket.socket() server.bind(("192.168.13.110", 9527)) server.listen(5) while True: con, di = server.accept() try: while True: ret = con.recv(1024).decode() # 操做命令 ret_command = subprocess.Popen(ret, shell=True, stderr=subprocess.PIPE, stdout=subprocess.PIPE ) ret_command_out = ret_command.stdout.read() # 操做指令执行后的内容长度 length_out = struct.pack("i", len(ret_command_out)) ret_command_err = ret_command.stderr.read() # 操做指令错误提示内容的长度 length_err = struct.pack("i", len(ret_command_err)) if ret_command_err: # 发送操做指令错误提示内容的长度 con.send(length_err) con.send(ret_command_err) else: # 发送操做指令执行后的内容长度 con.send(length_out) con.send(ret_command_out) except ConnectionResetError as e: con.close() continue
import struct import socket print("client link start ...") client = socket.socket() client.connect(("192.168.13.110", 9527)) # 创建链接 while True: # 不能发送空 content = input("请输入指令>>>>") if not content: continue client.send(content.encode()) ret_received = "" ret_received_length = 0 # 接收发送的内容长度 length = struct.unpack("i", client.recv(4))[0] ret_content = client.recv(1024).decode("gbk") # 将这个长度的内容接收完整 while ret_received_length < length: ret_received_length += len(ret_content) ret_received += ret_content print(ret_received)
TCP名为传输控制协议,三次握手只是相比较来讲保证了传输数据的可靠性,实际上任何协议多没法保证数据的彻底可靠,三次握手通俗讲,发送方为A,接收方为B,第一次>>B知道本身能够接收到A发送的信息,第二次>>>A知道B能够接收到本身发送的信息,第三次>>双方确认完毕,A告诉B咱们之间能够进行交流了spa
假设请求中断方为A,接收中断请求方为B.1>>A给B发送中断请求,2->>接收到中断请求后告诉A,你再等等我还没准备好,而后A继续等待,3->>发送消息给A我要断开链接了4->>A收到B的断开消息后,不信任,再次发送信息确认,如果B到信息则断开链接,没有则重传,此时A等到一段时间没有A的应答,知道B已经断开了,而后本身也断开链接
断开链接时反应到代码上:抛出异常/发送空内容;
1. DHCP,自动位局域网内容电脑分配IP。 2. 网关,路由器中链接交换机的口。 3. IP,4个点分的十进制表示 192.11.111.11 4. 子网掩码, IP: 192.168.13.99 掩码:255.255.255.0 将挡住的IP位数做为网段。 未挡住的部分做为可变的值。 5. 局域网/城域网/广域网 6. arp协议,ARP协议就是用来获取目标IP地址所对应的MAC地址的 7. DNS,域名解析,根据域名解析出IP
8. 端口,是为了将同一个电脑上的不一样程序进行隔离。IP是找电脑,端口是找电脑上的程序,http网站默认端口:80 ;https网站默认端口:443,范围1 - 65535,通常8000