網路程式設計 基礎一

2022-08-24 23:24:15 字數 3830 閱讀 3897

1.軟體開發架構:

開發軟體,必須要開發一套 客戶端 與 服務端。

​ 客戶端與服務端的作用:

​ 服務端: 24小時不間斷提供服務

​ 客戶端: 如果想要找服務,就去尋找服務並享受

軟體開發架構分為兩種:

c/s架構:

client:客戶端

server:服務端

優點:軟體使用穩定,並且可以節省網路資源。

缺點:2、軟體每次更新,客戶端也必須更新

c/s架構的軟體:

b/s架構:

browser:瀏覽器

server:服務端

優點:直接在瀏覽器上訪問需要使用的軟體

缺點:消耗網路資源過大,當網路不穩時,軟體的使用也會不穩定

b/s架構的軟體:

在瀏覽器上輸入某軟體的網域名稱

2、網路程式設計

網路程式設計發展歷史:

所有先進的技術都源自於軍事,希望通過遠端獲取資料,所以有了網路程式設計

早期如何實現遠端通訊:

- 打**-->**線

- 純平電腦 --> 網線,有線網絡卡

- 膝上型電腦 --> 有線網絡卡,無線網絡卡

要實現遠端通訊必須具備:

1、物理連線介質 --> 網絡卡

2、網際網路協議

- 人與人之間溝通的介質:中文、英文

- 計算機之間溝通的介質:『網際網路協議』

3、網際網路協議

網際網路協議又稱之為網路七層協議,osi七層協議,osi是乙個世界標準組織

osi七層協議:

- 應用層

- 表示層

- 會話層

- 傳輸層

- 網路層

- 資料鏈路層

- 物理連線層

學習由下到上:

需要了解的協議共5層:

- 物理連線層

基於電訊號傳送二進位制資料。

如何切分

- 資料鏈路層

資料鏈路層的『乙太網協議』,主要用於處理基於電訊號傳送的二進位制資料

乙太網協議:

1、規定了電訊號資料的分組方式

2、每一台連線網線的電腦都必須要由一塊『網絡卡』。

網絡卡由不同的廠商生產的

每塊網絡卡都會有世界上獨一無二的12位編號

前6位:廠商號

後6位:流水號

- 交換機:

可以讓多台電腦連線在一起

基於乙太網協議傳送資料:

特點: 廣播、單播

缺點: 廣播風暴、不能跨區域網通訊。

- 網際網路:

讓區域網之間可以通訊。

- 網路層

ip: 點分十進位制的數字

最小值:0.0.0.0

最大值:255.255.255.255

- 傳輸層

tcp/udp協議,他們都是基於埠操作

tcp是流式協議

- 埠號:標識電腦上的某個軟體。

- 埠號範圍:0 — 65535

注意:1、作業系統中,一般0-1024的埠都被預設使用了,不要動它

2、盡量使用8000以後的埠號 8001

開發中常用軟體的預設埠號:

mysql:3306

mongodb:27017

django:8000

tomcat:8080

flask:5000

redis:6379

若想服務端和客戶端進行通訊,必須要建立連線,產生兩條管道。

一條是客戶端向服務端傳送訊息的

另一條時服務端向客戶端傳送訊息的

- 應用層

ftp

總結:

ip: 用於唯一標識某一台計算機的位置。

port:用於確認計算機上的某個應用軟體

tcp協議的工作原理:

- tcp是乙個流式協議

- 三次握手,四次揮手(*******):

- 三次握手建連線:

建立雙向通道,建立好連線。

三次握手過程:

第一次握手:建立連線時,客戶端傳送syn包到伺服器,並進入syn_sent狀態,等待伺服器確認

第二次握手:伺服器收到syn包,確認客戶的syn,同時傳送乙個syn包,即syn+ack包,此時伺服器進入syn_recv狀態;

第三次握手:客戶端收到伺服器的syn+ack包,向伺服器傳送確認包ack(ack=y+1),此包傳送完畢,客戶端和伺服器進入established(tcp連線成功)狀態,完成三次握手。

- 四次揮手斷連線:

第一次,客戶端向服務端發出fin請求,並且停止傳送資料。客戶端進入fin-wait-1(終止等待1)狀態。

第二次,伺服器收到請求,發出ack確認,服務端進入close-wait(關閉等待)狀態。

等待,客戶端收到伺服器的確認後,此時,客戶端就進入fin-wait-2 (終止等待2)狀態,等待伺服器傳送fin請求(可能還需要接受伺服器傳送的最後的資料)。

第三次,伺服器將最後的資料傳送完畢後,向客戶端傳送fin請求,伺服器就進入了last-ack(最後確認)狀態,等待客戶端的確認。

第四次,客戶端收到伺服器的fin請求,發出ack確認,客戶端就進入了time-wait(時間等待)狀態。(注意:此時tcp連線還沒有釋放,必須經過2msl(最長報文段壽命)的時間後,當客戶端撤銷相應的tcb後,才進入closed狀態。伺服器只要收到了客戶端發出的確認,立即進入closed狀態。同樣,撤銷tcb後,就結束了這次的tcp連線。可以看到,伺服器結束tcp連線的時間要比客戶端早一些。)

5、socket

1.什麼是socket?

socket是乙個模組,可以寫一套c/s架構的套接字。

2.為什麼要使用socket?

socket套接字會封裝好各層協議的工作。

好處:可以節省開發成本。

3.如何使用

import socket

客戶端:

import socket

client = socket.socket()

client.connect(('127.0.0.1', 9527))

while true:

send_msg = input('client --> server:')

client.send(send_msg.encode('utf8'))

if send_msg == 'q':

break

data = client.recv(1024).decode('utf8')

print(data)

client.close()

服務端:

import socket

server = socket.socket()

server.bind(('127.0.0.1', 9527))

server.listen(5)

conn, addr = server.accept()

print(addr)

while true:

data = conn.recv(1024).decode('utf8')

print(data)

if data == 'q':

break

send_msg = input('server --> client:').encode('utf8')

conn.send(send_msg)

conn.close()

注意: 客戶端與服務端必須尊循:

一端send,另一端recv

不同兩端同時send或recv

網路程式設計基礎(一)

網路程式設計基礎 網路程式設計的實現就必須有伺服器和客戶端的存在 伺服器 為客戶提供服務的一方 客戶端 獲取資料的為客戶端,可以是任意一台主機,只要它和伺服器存在連線,並且的到伺服器的授權,就可以使用伺服器提供的服務 有兩種協議可以選擇 1 tcp 面向連線的 可靠的 流式服務 2 udp 無連線 ...

網路程式設計基礎(一)

1 網路 在計算機領域中,網路是資訊傳輸 接收 共享的虛擬平台,通過它把各個點 面 體的資訊聯絡到一起,從而實現這些資源的共享。2 網際網路 internet 是網路與網路之間所串連成的龐大網路,這些網路以一組通用 的協議相連,形成邏輯上的單一巨大國際網路。在不同主機上的兩個程序 4 在網路乙個程序...

網路程式設計基礎一

osi參考模型也稱為七層模型 應用層 表示層 會話層 傳輸層 網路層 資料鏈路層 物理層 tcp ip參考模型也稱為4層模型 應用層例如 http ftp 傳輸層例如 tcp udp 網際層例如 ip 資料鏈路層 物理層例如 無線 光纜 網線 ip位址 網路中裝置的標識 埠號 用於標識程序的邏輯位址...