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