網路程式設計Socket

2021-07-03 18:32:28 字數 1561 閱讀 3610

協議棧

**直接傳輸資料需要協議

網路七層:應用層,表示層,會話層,傳輸層,網路層,鏈路層,物理層

網路五層:應用層,傳輸層,網路層,鏈路層,物理層

一般網際網路現在都是用的五層協議。把表示層,和回話層的功能都交給了具體的應用層來做了

應用層協議:(http,ftp,smtp)報文message

傳輸層協議:(tcp,udp)報文段segment,為執行在不同主機上的應用層「程序間」提供資料傳輸服務,通過套接字(socket)實現

tcp(傳輸控制協議)面向連線的,可靠(應用:ftp,smtp,http等,都是基於tcp)

網路層協議:網路層協議其實就是ip協議,資料報datagram,把資料從一台主機移動到另一台主機,主機間通訊,ip協議不可靠,有丟包

鏈路層協議:(乙太網,比如哪個交換機與哪個交換機直接的資料傳輸。例如:wifi,點對點)幀rame,負責將資料報傳遞給下乙個節點。不同 鏈路層有特定的鏈路層協議,一系列路由,交換機

物理層:負責吧資料乙個bit乙個bit的從乙個節點移動到下乙個節點,該層中的協議仍然與鏈路層相關,例如,乙太網具有許多物理層協議:雙絞銅線的,同軸電纜的,光纖的。(每一層都只考慮自己,不關心其他)

埠號的分類

埠範圍:0-65535之間。埠的意義:用來區分不同的程序。(每個程式都會監聽不同的埠號)

埠分為以下三類

1》公認埠(well known ports):從0-1023,他們緊密繫結(binding)於一些服務。通常這些埠的通訊明確表明了某種服務協議。例如:80埠實際上總是http通訊,ftp21,smtp25.......。所以我們自己使用這些埠號的時候,不要使用這些0-1023之間的埠號,這些埠號很有可能和其他服務衝突

2》註冊埠(registered ports):從1024到49151。它們鬆散的繫結與一些服務(例如:某些公司的某些軟體,sun公司某個系統的某個服務等。也就是說,有許多服務繫結與這些埠,這些埠同樣用於許多其他目的,例如許多系統處理動態埠從1024左右開始)  所以1024-49151之間的埠號我們也最好不要使用,如果你使用這些大公司的一些軟體,就容易產生衝突

3》動態和/或私有埠(dynamic and/or private ports)從49152到65535 理論上,不應為服務分配這些埠,實際上,機器通常從1024起分配動態埠。但也有例外:sum的rpc埠從32768開始      所以這些埠號我們可以隨便用

使用命令 netstat -a -n 【-a顯示所有埠, -n以數字形式顯示】可以檢視所有的埠

網路程式設計 Socket程式設計

一 網路部分 1.ip 2.埠號 在網路協議中使用埠號識別主機上不同的程序,不同的埠對應於不同的服務 應用程式 3.協議 tcp二 socket部門socket通訊基本流程圖 根據socket通訊基本流程圖,總結通訊的基本步驟 伺服器端 第一步 建立乙個用於監聽連線的socket對像 第二步 用指定...

socket網路程式設計

首先認識乙個表示主機資訊的結構體 struct hostent h addrtype 這是表示主機所使用的位址型別的定義,在c語言winsock2.h標頭檔案中以 af 開頭的巨集定義就是它的值。如果使用的是ipv4,則值為 af inet 如果是ipv6,值為 af inet4 h length ...

Socket網路程式設計

socket 網路程式設計 在c free中建立乙個對話方塊工程,取名socket1,建立如下檔案結構 main.h ifndef main h define main h include bool winapi main proc hwnd hwnd,uint umsg,wparam wparam...