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