Linux 網路基礎及網路程式設計套接字

2021-09-22 02:05:25 字數 2766 閱讀 5025

網路基礎1 網路發展背景—網路程式設計的前情提要

網路通訊協議:通訊雙方對通絡通訊資料訊號的解析式

協議分層:

優點:將提供的服務,以及協議介面進行封裝後,使用起來比較方便,替換起來更加清晰簡單

按照網路通訊中的協議,介面,服務對網路通訊進行分層

tcp/ip五層模型(來自於osi七層模型)

tcp/ip是一組協議成為tcp/ip協議簇,最經典的兩個tcp ip

應用層:負責應用程式間的**溝通**;http網頁間傳輸 ftp檔案協議

傳輸層:負責端與端之間的資料**傳輸**;tcp/udp;

鏈路層:負責相鄰裝置之間的**資料幀**傳輸;(網路層)乙太網協議(eth);交換機;

物理層:負責光電訊號的傳輸;(物理層)乙太網協議(網線粗細等問題);集線器;

通訊流程:

套接字程式設計(socket程式設計)

功能:網路主機的唯一標識

資料:無符號4個位元組的整數 uint_32_t

源ip位址->目的ip位址

數量:43億~不夠用

1.僅為正在上網者分配---dhcp(ip自動分配)

2.ip位址替換技術---nat

ipv6並不向下相容ipv4--------造成其流行不起來

port埠:

資料型別:無符號2位元組的整數 uint16_t 65535

用於唯一標識主機上處理資料的程序

源ip,源埠,目的ip,目的埠,協議(sig sport dip dport proto)五元組--標識一條通訊

網路位元組序:

位元組序:cpu對資料進行訪問的順序---儲存大小大於1個位元組的資料

0x 01 02 03 04

【x86架構----小端】

【mips架構----大端】

通訊雙方無法確定對方電腦的位元組序的時候,傳送大於乙個位元組儲存的資料就有可能造成資料錯誤

解決方法:不管主機是大端還是小端,反正網路通訊時候統一使用大端位元組序進行通訊

資料型別:short int long float double

網路位元組序標準就是大端位元組序

主機位元組序:當前主機位元組序-不一定是大端/小端,取決於cpu架構,需進行判斷;

套接字程式設計:

網路通訊的時候,鏈路層---eth,網路層--ip,傳輸層-tcp/udp,應用層

傳輸層到底應該選擇tcp還是udp好?分析利弊,視場景而定;

tcp(傳輸控制協議)---有連線,可靠傳輸,面向位元組流

可靠傳輸:網路狀況良好

確保資料能夠到達對端----保證資料的安全傳輸,傳輸靈活,傳輸速率低,粘包問題

udp(使用者資料報協議)---無連線,不可靠,面向資料報

無法保證資料的安全傳輸----傳輸速度快,傳輸不夠靈活,無粘包問題

對資料安全性要求高的程式用tcp---典型場景----檔案傳輸

兩台主機直接進行網路通訊---必定有一方是主動方

客戶端(主動方)-----請求----> 服務端(被動方)

socket介面:

作業系統提供的一套網路程式設計介面

乙個埠只能被乙個程序使用,但乙個程序可以使用多個埠

基於udp協議實現網路通訊:

客戶端 ----》 伺服器

1.建立套接字(建立與網絡卡的關聯) 1.建立套接字

/*2.為套接字繫結位址資訊 2.為套接字繫結位址資訊

對於客戶端來說,不推薦手動繫結*/

-----------可以沒有的操作!!!

3.傳送資料 3.接受資料

4.接受資料 4.傳送資料

5.關閉套接字 5.關閉套接字

1.socket()

2.bind()

3.sendto()

4.recvfrom()

5.close()

編寫可參考基於udp協議實現網路通訊:

基於tcp協議的網路程式程式設計:

服務端 《---- 客戶端

1.建立套接字 1.建立套接字

2.為套接字繫結位址資訊 2.

3.開始監聽 3.向伺服器發起連線請求

4.獲取連線成功的客戶端socket描述符 4.接收/傳送資料

5.通過新的socket接收/傳送資料 5.關閉socket

6.關閉socket

tcp的服務端會為每乙個客戶端都建立乙個新的socket,用這個新的socket專門用於跟客戶端進行通訊

一開始建立的socket,可以接收所有客戶端的連線請求,一旦與客戶端連線建立成功,作業系統會為客戶端建立單獨的socket進行資料通訊

一開始的socket稱之為:監聽socket(僅用於建立連線)

後邊為每乙個客戶端建立的socket稱之為:資料傳輸socket(專門用於資料傳輸)

監聽socket與資料傳輸socket的區別,就如等待客服和專屬客服正在服務的區別

linux網路程式設計基礎 網路基礎

客戶機 client 伺服器 server 模式。需要在通訊兩端各自部署客戶機和伺服器來完成資料通訊。瀏覽器 browser 伺服器 server 模式。只需在一端部署伺服器,而另外一端使用每台pc都預設配置的瀏覽器即可完成資料的傳輸。c s模式 優點缺點 資料快取本地,效率高 工作量大,開發周期更...

Linux網路程式設計基礎

伺服器端 server.c include include include include include define max line 100 process fuction,turn upper word to lower void my fun char p int main void st...

linux網路程式設計基礎

ifndef errwrap h define errwrap h void perr exit const char s void err exit const char s int accept int fd,struct sockaddr sa,socklen t salenptr void ...