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