網路程式設計的四層協議

2021-10-10 18:11:38 字數 4182 閱讀 7022

應用層協議

與網路相關的程式,通過網路與其他程式通訊,使用的資料格式規範。比如瀏覽器向伺服器發請求獲取網頁資料,

此時傳送的請求報文(皇室信件)就需要遵循http協議(按http協議的要求填寫字段)。常見的應用層協議有:

- http(80埠),主要用於普通瀏覽。

- https(443埠),http協議的安全版本。

- ftp(20和21埠),用於檔案傳輸。

- pop3(110埠),收郵件用。

- smtp(25埠),用來傳送電子郵件。

- ssh(22埠),用於加密安全登陸用。

- dhcp(67埠,動態主機配置協議),動態配置ip位址。

- dns,用於完成位址查詢,郵件**等工作(執行在tcp和udp協議上)。

- snmp,用於網路資訊的收集和網路管理。

- arp,用於動態解析乙太網硬體的位址。

傳輸層協議

解決諸如端到端可靠性(資料是否已經到達目的地)和保證資料按照正確的順序到達這樣的問題。tcp、udp都是傳輸層協議。

網路層協議

解決在乙個單一網路上傳輸資料報的問題。ip協議是網路層協議。

資料鏈路層協議

它是資料報從乙個裝置的網路層傳輸到另外乙個裝置的網路層遵循的規範。比如乙太網協議、wi-fi協議。

ip1,dns

dns伺服器用於將網域名稱的請求轉換為ip位址。

2,檢視電腦的ip位址

在windows系統下,ipconfig

在linux系統下, ifconfig

3,ping 用來檢視電腦是否有網

埠號

埠號:0-

-65535

知名埠號:0-

-1023

http的埠號:

80動態埠號:

1024--

65535

檢視電腦的埠:

在windows系統下, netstat -ano

在linux系統下, netstat -an

socket套接字

作用:用來實現不同電腦之間程序的通訊

建立socket套接字

1,先導包  import socket

2,socket(address family,type)

address family 分為:af_inet(實現網路之間程序的通訊) af_unix(一台電腦程序之間的通訊)

type 分為 1,udp sock_dgram 2

,tcp sock_stream

3,關閉套字 close

udp套接字與tcp套接字的區別

udp 套接字 不需要建立連線, 時效性較高, 多對一,一對一,一對多,多對多

tcp 套接字 需要建立連線, 更加安全,一對一

udp 通訊流程

1,建立udp套接字

from socket import

*變數1

= socket(af_inet,sock_dgram)

2,位址 ip位址

變數2=("192.168.1.34"

,8080)

繫結埠號 bind((""

,新埠號)

) 變數1.bind((""

,8010))

3,內容 input(「內容」)

變數3=

input("請輸入內容:").encode(

"gbk"

)4,傳送 sendto()

變數1.sendto(內容,位址)

變數1.sendto(變數3,變數2

)5,接收 變數4(接收內容),變數5(接收ip位址)= recvfrom(

1024

)print

(變數4.decode(

"gbk"))

print

(變數5

)6,關閉 close()

變數1.close(

)

tcp

需要建立連線

tcp通訊流程

建立連線之前

三次握手 四次揮手

第一次握手 客戶端向伺服器傳送連線請求

第二次握手 伺服器向客戶端傳送確認請求 並等待連線

第三次握手 客戶端伺服器傳送確認 開始建立連線

斷開連線之前

四次揮手執行流程

第一次揮手 客戶端給伺服器傳送斷開請求

第二次揮手 伺服器向客戶端傳送確認埠請求

第三次揮手 伺服器端口

第四次揮手 客戶端確認斷開 斷開連線

tcp客戶端

1,建立套接字

from socket import

*變數 = socket(af_inet,sock_stream)

2,位址

3,建立連線 connect(位址)

4,寫內容 編碼encode("gbk")

5,傳送 send(內容)

6,接收 變數= recv(1024)

7,輸出接收的資料 解碼decode("gbk")

8,關閉

tcp伺服器

1,建立套接字

2,繫結ip位址、埠號

3,把套接字變為被動 listen()

4,等待連線 新的套接字,ip位址 = 套接字.accept()

5,接收資料 新的套接字.recv(1024).decode("gbk")

6,傳送資料 新套接字.send(input("輸入傳送內容").encode("gbk"))

7,關閉 客戶端

關閉 伺服器

udp 和 tcp 區別 

1、tcp需要建立連線 安全係數高 所需要的資源多 只支援 一對一

2、udp不需要建立連線 時效性好 所需要的資源少 支援 一對一 一對多 多對一 多對多

http協議 發布與2023年

超文字傳輸協議

初衷是用來傳輸 html協議

用的最多的版本是 1.1

瀏覽器向伺服器請求資料的過程

1,輸入**

3,通過ip位址找到 web伺服器

4,web伺服器從本地計算機中找到相對應的資源

5,將資源返回給瀏覽器

6,瀏覽器將資料解析出來, 返回網頁中

get 請求報文說明

---

- 請求行 ---

1.1# get請求方式 請求資源路徑 http協議版本--

-- 請求頭 ---

--host: www.baidu.com # 伺服器的主機位址和埠號,預設是80

connection: keep-alive # 和服務端保持長連線

upgrade-insecure-requests:

1# 讓瀏覽器公升級不安全請求,使用https請求

user-agent: mozilla/

5.0537.36

(khtml, like gecko) chrome/

69.0

.3497

.100 safari/

537.36

# 使用者**,也就是客戶端的名稱

0.9,image/webp,image/apng,*/

*;q=

0.8# 可接受的資料型別

accept-encoding: gzip, deflate # 可接受的壓縮格式

accept-language: zh-cn,zh;q=

0.9#可接受的語言

cookie: p**_pvi=

1246921728

;# 登入使用者的身份標識--

-- 空行 ---

-)

四層網路協議

上軟體工程的時候,課本知識嘛是一點都沒聽,廢話記住不少 單獨記一下四層網路協議,畢竟和課本知識不一樣 參考osi與tcp 1.osi七層和tcp ip四層的關係 1.1 osi引入了服務 介面 協議 分層的概念,tcp ip借鑑了osi的這些概念建立tcp ip模型。1.2 osi先有模型,後有協議...

網路協議 傳輸層協議 Socket程式設計

套接字底層原理使用 tcp 或 udp 時,又會廣泛使用到 socket 套接字 api,socket 原本是由 bsd unix 開發的,但是後來被移植到 windows 的 winsock 以及嵌入式系統中。應用程式利用 socket,可以設定對端的 ip 位址 埠號,並實現資料的接收和傳送 下...

網路程式設計 osi五層協議

物理層 資料鏈路層 網路層 傳輸層 應用層 表示層 會話層 物理層指的就是網線,光纖,雙絞線等物理傳輸介質 物理層傳送的是資料 位元流 資料鏈路層對資料進行分組 乙太網協議 對資料進行合理的分組 一組資料構成乙個資料報,又叫一幀 每乙個資料報分為 報頭head和資料data兩部分 head包含 源位...