摘要:是位的整數,以字符串形式表示地址,它是目前使用的的升級版,以字符串表示類似于。
基本概念
TCP TCP(Transmission Control Protocol 傳輸控制協議)鏈接新浪客戶端
UDP User Datagram Protocol的簡稱, 中文名是用戶數據報協議
IP 網絡之間互連的協議(IP)是Internet Protocol 協議 端口協議:http https
TCP/IP協議:因為互聯網協議本身就包含很多協議標準,但最重要的兩個協議就是TCP和IP協議,所以互聯網協議可以簡稱為TCP/IP協議
IP地址:如果想要連接一臺電腦,我們就需要知道這臺電腦的標識,互聯網上為每臺電腦都提供一個唯一的標識,這個標識就是ip地址,類似于123.123.123.123
IP地址對應的實際上是計算機的網路接口IP協議:負責把數據從一臺計算機上通過協議發送給另一條計算機,數據會被切割成一小塊一小塊,通過IP包發送出去
IP包的特點:本身是以塊的形式發送數據,但不保證能夠全部到達,也不能保證按順序到達
TCP協議:建立在IP協議之上,TCP協議負責把兩臺計算機之間建立可靠連接,保證數據按順序到達,
如果數據包丟失,會自動重新發送IP地址
IPv4:是32位的整數,以字符串形式表示ip地址,以字符串表示的IP地址如192.168.0.1實際上是把32位整數按8位分組后的數字表示,目的是便于閱讀。
123.123.123.123 0-255.0-255.0-255.0-255IPv6: 是128位的整數,以字符串形式表示ip地址,它是目前使用的IPv4的升級版,以字符串表示類似于2001:0db8:85a3:0042:1000:8a2e:0370:7334。
端口:為了區分不同的程序
一個完整的IP地址:
協議 IP 端口號
http://10.31.157.61:8080
電腦服務器默認值端口80,人為重新設置端8080
# socket 套接字 # 通常我們用一個Socket表示“打開了一個網絡鏈接”,而 # 打開一個Socket需要知道目標計算機的IP地址和端口號,再指定協議類型即可 """ 客戶端:向服務器發送請求,接受服務器的數據 服務器:接受客戶端的數據,發送給客戶端數據 """ import socket # 1.創建一個socket對象 # 參數一:指定協議,AF_INETH或AF_INET6 (IPv4, IPv6) # 參數二:SOCK_STREAM 使用TCP協議 以流的形式發送或接收數據 socket1 = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 2.建立連接 # connnect的參數為一個元組類型的額數據,第一個是IP 第二個是端口號 socket1.connect(("www.sina.com.cn", 80)) # 3 發送請求,要求請求新浪首頁的內容并返回該內容 # send的參數為字節類型 """ GET/HTTP/1.1 GET:表示的是一種請求方式,將從服務器直接獲取數據(網址必須是完整的) # 請求方式通常使用兩種:GET, POST # 其他的請求方式:PUT DELETE / : 表示的是url路徑,url總是以/開始 HTTP/1.1: 協議版本, HTTP協議,版本1.1 目前也有支持1.0的版本的服務器 1.0和1.1的區別:1.1版本允許多個HTTP請求一個TCP鏈接,可以加快傳輸速度 Host: www.sina.com.cn:請求地址為www.sina.com.cn 如果一個服務器有多個網站 服務器需要使用Host來區別瀏覽器請求的地址 Connection:close 當服務器發送給客戶端數據之后就自動斷開連接 : 每一個請求頭(header)使用 分開的 :表示Header結束 后面都是Body(請求體)部分 """ socket1.send(b"GET / HTTP/1.1 Host: www.sina.com.cn Connection: close ") # 4. 接受數據 data = [] while True: # recv:接受數據 1024:每次允許接收1K的數據 tmp = socket1.recv(1024) if tmp: data.append(tmp) else: break # 5.拼接數據 # b""join() 按字節拼接 整體為字節類型bytes dataStr = b"".join(data) # 6.關閉連接 socket1.close() header, html = dataStr.split(b" ", 1) # 將字節解碼(utf-8) 解碼為字符串數據類型的數據 print(header.decode("utf-8")) with open("sina.html", "wb") as f: f.write(html)TCP服務端
# TCP服務端 import socket # 1.創建一個socket 用作服務端 server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 2.綁定一個IP地址及端口號 # 端口號的范圍 1-65536 # ip 地址 端口號 server.bind(("10.31.157.15", 43998)) # 3.監聽 # 傳入的值在指定的拒絕鏈接之前允許鏈接的最大數,該值至少為1 # 大部分設置為5即可 server.listen(5) print("Waiting for connection...") # 4.等待客戶端連接,會阻塞程序運行 # server.accept() 如果鏈接成功,會返回客戶端的socket及address clientSocket, clientAddress = server.accept() print(clientSocket) print(clientAddress) while True: # 5.接受客戶端數據 data = clientSocket.recv(1024) print("客戶端說:",data.decode("utf-8")) # 6.發送數據給客戶端 sendDate = input("請輸入想要發送的內容:") clientSocket.send(sendDate.encode("utf-8"))TCP客戶端
# TCP 客戶端 import socket # 1.創建一個socket:用于客戶端 client = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # 2.創建鏈接:鏈接服務器 client.connect(("10.31.157.15", 43998)) while True: # 3.客戶端發送給服務器端信息 dataStr = input("請輸入想要發送給服務器的內容") client.send(dataStr.encode("utf-8")) # 客戶端接受服務器端的信息 data = client.recv(1024) print("服務器說:", data.decode("utf-8"))多線程服務器
import socket from threading import Thread # 線程 server = socket.socket(socket.AF_INET, socket.SOCK_STREAM) server.bind(("10.31.157.15", 43998)) server.listen(5) print("Waiting for connection...") # 等待客戶端連接 def chat(client, address): while True: data = client.recv(1024) print("客戶端",address,":", data.decode("utf-8")) sendData = input("服務器說:") client.send(sendData.encode("utf-8")) # 等待客戶端連接 while True: clientSock, clientAddress = server.accept() print(clientAddress) # 接收數據,發送數據放到線程 threadChat = Thread(target=chat, args=(clientSock, clientAddress)) # 啟動線程 threadChat.start()UDP介紹
TCP: 是建立可靠鏈接,服務器及客戶端都可接受發送數據
UDP : 不需要建立可靠鏈接,只需要知道對方的IP地址及端口號即可
UDP可以直接發送數據,但對方能不能接收就不一定了
UDP的鏈接不可靠,但與TCP相比,速度快,對于需求不高的數據可以使用UDP
飛秋群發import socket # UDP SOCK_DGRAMY以包的形式傳輸數據 socket1 = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) str1 = "1_lbt4_10#32499#002481627512#0#0#0:1289671407:名字:備注:288:發送的內容" for i in range(1,255): address = ("10.31.162.%s"%(i),2425) socket1.sendto(str1.encode("gbk"), address)UDP服務器
import socket # 1.創建socket server = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) # 2.綁定 server.bind(("10.31.157.15", 39999)) while True: # 3.接受數據 recvfrom data, address = server.recvfrom(1024) print(address,"說:", data.decode("utf-8")) # 4.發送數據 sendStr = input("發送的數據為:") server.sendto(sendStr.encode("utf-8"), address)UDP客戶端
import socket client = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) print("Waiting for connection...") while True: # 發送數據 sendStr = input("客戶發送:") client.sendto(sendStr.encode("utf-8"), ("10.31.157.15", 39999)) # 接收數據 data, address = client.recvfrom(1024) print(address, "服務端說:", data.decode("utf-8"))
文章版權歸作者所有,未經允許請勿轉載,若此文章存在違規行為,您可以聯系管理員刪除。
轉載請注明本文地址:http://specialneedsforspecialkids.com/yun/41643.html
摘要:關聯子網創建網絡后,用戶可將該與所屬下的任意子網進行綁定和解綁。支持子網內全部資源子網內指定資源。因此需要額外添加一條針對同子網網段的放行規則。網絡網絡是子網級別的安全策略,用于控制進出子網的數據流。網絡ACL簡介網絡ACL是子網級別的安全策略,用于控制進出子網的數據流。用戶可以通過設置出站規則和入站規則,對進出子網的流量進行精確控制。網絡ACL是無狀態的,例如用戶如果需要允許某些訪問,則需...
摘要:在網絡層有協議協議協議協議和協議。而且,因為有確認機制三次握手機制,這些也導致容易被人利用,實現等攻擊。沒有的這些機制,較被攻擊者利用的漏洞就要少一些。但也是無法避免攻擊的,比如攻擊缺點不可靠,不穩定。 簡介 HTTP協議(超文本傳輸協議)和 UDP(用戶數據包協議),TCP 協議(傳輸控制協議) TCP/IP是個協議組,可分為四個層次:網絡接口層、網絡層、傳輸層和應用層。在網絡層有I...
摘要:網絡簡介網絡簡介本篇目錄關聯子網關聯子網出站入站規則出站入站規則產品配額產品配額網絡是子網級別的安全策略,用于控制進出子網的數據流。用戶對網絡規則的更新,會自動應用到與其相關聯的子網。支持子網內全部資源子網內指定資源。 網絡ACL簡介本篇目錄關聯子網出站/入站規則產品配額網絡ACL是子網級別的安全策略,用于控制進出子網的數據流。用戶可以通過設置出站規則和入站規則,對進出子網的流量進行精確控制...
閱讀 769·2021-11-23 09:51
閱讀 835·2021-11-23 09:51
閱讀 2503·2021-11-15 18:01
閱讀 3862·2021-10-11 11:07
閱讀 2396·2021-09-22 15:30
閱讀 1075·2021-09-22 14:59
閱讀 1557·2019-08-30 15:55
閱讀 1753·2019-08-30 15:52