目錄
一. 網絡編程的概念
二. 網絡編程基礎知識
1)網卡
2)接收端和發送端
3)客戶端和服務器
4)請求和響應
?5)客戶端和服務器的交互模式
三. Socket 套接字模型
一. 網絡編程的概念
網絡編程?是通過編程實現不同進程之間數據交換和通信的技術。
- 主機1向主機2發送網絡數據,主機1發送網絡資源(客戶端)主機2獲取網絡資源(服務器)
- 如果是同一個主機,只要是不同的進程,基于網絡來傳輸數據,那么也屬于網絡編程
網絡編程的本質就是學習傳輸層提供給應用層的API,通過使用這些API,將數據交給傳輸層,經過層層封裝將數據通過網卡發送出去
二. 網絡編程基礎知識
1)網卡
網卡屬于計算機的硬件組件,將二進制數據轉換成適合傳輸的光電信號,并處理網絡協議的底層細節
2)接收端和發送端
接收端和發送端
發送數據的一方,稱為發送端
接收數據的一方,稱為接收端
3)客戶端和服務器
?客戶端和服務器
主動發起通信的一方,稱為客戶端
被動接受通信的一方,稱為服務器
同一個程序在不同的場景中,可能是客戶端也可能是服務器?
4)請求和響應
客戶端給服務器發送的數據,稱為請求
服務端給客戶端返回的響應,稱為響應?
?5)客戶端和服務器的交互模式
- 一問一答(?一個請求對應一個響應)
客戶端給服務器發個請求,服務器給客戶端返回個響應(網站開發)
- 一問多答 (一個請求對應多個響應)
客戶端發一個請求,服務器返回多個響應(下載文件)
- 多問一答?(多個請求對應一個響應)
?客戶端發多個請求,服務器響應一個(上層文件)
- 多問多答(多個請求對應多個響應)
?客戶端發送多個請求,服務器返回多個響應(遠程控制)
三. Socket 套接字模型
網絡編程主要使用系統API,這些API主要是由傳輸層提供,傳輸層主要有兩種協議:TCP和UDP
由于協議的不同,導致提供的API也不同?
?Socket套接字針對傳輸層協議分為了三類:
- 流套接字(使用傳輸層TCP協議)
- 數據報套接字(使用傳輸層UDP協議)
- 原始套接字
?傳輸層主要協議:TCP和UDP協議(重點!!!)
UDP:無連接,不可靠傳輸,面向數據報,全雙工
TCP:有鏈接,可靠傳輸,面向字節流,全雙工
1)有鏈接/無連接
有鏈接
- 這里的連接并不是物理意義上的理解,而是抽象的連接
- 連接的特點是必須雙方都認同,連接后才能傳輸數據(打電話)
- 連接的本質就是使用一些數據結構去記錄對方的信息
無連接
- ?不管你認不認同,數據都可以發送過去(發短信)
2) 可靠傳輸/不可靠傳輸
- 這里的可靠傳輸不能保證數據百分之百到達接收端
- 可靠傳輸:發送的數據是否送達,發送方可以感知到?
3)面向字節流/面向數據報
面向字節流(TCP):網絡中傳輸的基本單位是字節
面向數據報(UDP):網絡中傳輸的基本單位是數據報(由一系列字節組成)?
?4)全雙工/半雙工
全雙工:同一時刻,可以雙向通信
半雙工:同一時刻,只能單向通信
UDP數據報套接字模型
TCP流套接字模型?
點贊的寶子今晚自動觸發「躺贏錦鯉」buff!下一章詳細介紹UDP數據報套接字編程?