網路程式設計 C S架構,TCP IP介紹

2022-09-03 20:18:12 字數 2650 閱讀 2623

什麼是c/s架構?

c指的是client(客戶端軟體),s指的是server(服務端軟體)

應用軟體如何執行?

客戶端軟體想要基於網路傳送一條訊息給服務端軟體,流程是:

1、客戶端軟體產生資料,存放於客戶端軟體的記憶體中,然後呼叫介面將自己記憶體中的資料傳送/拷貝給作業系統記憶體

2、客戶端作業系統收到資料後,按照客戶端軟體指定的規則(即協議)、呼叫網絡卡傳送資料

3、網路傳輸資料

4、服務端軟體呼叫系統介面,想要將資料從作業系統記憶體拷貝到自己的記憶體中

5、服務端作業系統收到4的指令後,使用與客戶端相同的規則(即協議)從網絡卡接收到資料,然後拷貝給服務端軟體

什麼是tcp/ip?

osi七層模型:

osi/rm模型(open system interconnection / reference model)的設計目的是成為乙個所有計算機廠商都能實現的開放網路模型,來克服使用眾多私有網路模型所帶來的困難和低效性。

物理層功能:主要是基於電器特性傳送高低電壓(電訊號),高電壓對應數字1,低電壓對應數字0

資料鏈路層由來:單純的電訊號0和1沒有任何意義,必須規定電訊號多少位一組,每組什麼意思

資料鏈路層的功能:定義了電訊號的分組方式

乙太網協議:

早期的時候各個公司都有自己的分組方式,後來形成了統一的標準,即乙太網協議ethernet

ethernet規定

head包含:(固定18個位元組)

data包含:(最短46位元組,最長1500位元組)

head長度+data長度=最短64位元組,最長1518位元組,超過最大限制就分片傳送

網路層:

乙個個彼此隔離的小的區域網組成的,那麼如果所有的通訊都採用乙太網的廣播方式,那麼一台機器傳送的包全世界都會收到,

這就不僅僅是效率低的問題了,這會是一種災難

必須找出一種方法來區分哪些計算機屬於同一廣播域,哪些不是,如果是就採用廣播的方式傳送,如果不是,

就採用路由的方式(向不同廣播域/子網分發資料報),mac位址是無法區分的,它只跟廠商有關

必須找出一種方法來區分哪些計算機屬於同一廣播域,哪些不是,如果是就採用廣播的方式傳送,如果不是,

就採用路由的方式(向不同廣播域/子網分發資料報),mac位址是無法區分的,它只跟廠商有關

區分網路位和主機位是為了劃分子網,就是把乙個大網路分成多個小網路,為什麼要分子網呢?

劃分子網本質上就是借主機位到給網路位,每借一位主機位,這個網段的可分配主機就會越少,比如192.168.1.0/24可用主機255個,借一位變成192.168.1.0/25,那可用主機就從255-128=127個了(從最大的值開始借),再借一位192.168.1.0/26,那可用主機數就變成了255-(128+64)=63個啦

檢視本機arp表的命令

一般主要用icmp協議檢測網路是否通暢,基於icmp協議的工具主要有ping和traceroute(win系統是tracert)

ping 利用icmp協議包來偵測另乙個主機是否可達。原理是用型別碼為0的icmp髮請 求,受到請求的主機則用型別碼為8的icmp回應。ping程式來計算間隔時間,並計算有多少個包被送達。使用者就可以判斷網路大致的情況。我們可以看到, ping給出來了傳送的時間和ttl的資料。

traceroute(win系統用tracert)

用來檢視從當前主機到某位址一共經過多少跳路由

傳輸層那麼我們通過ip和mac找到了一台特定的主機,如何標識這台主機上的應用程式呢?答案就是埠,埠即應用程式與網絡卡關聯的編號。

傳輸層功能:建立埠到埠的通訊

補充:埠範圍0-65535,0-1023為系統占用埠

傳輸層有兩種協議,tcp和udp,見下圖:

tcp協議

可靠傳輸,tcp資料報沒有長度限制,理論上可以無限長,但是為了保證網路的效率,通常tcp資料報的長度不會超過ip資料報的長度,以確保單個tcp資料報不必再分割。

最可靠的方式就是只要不得到確認,就重新傳送資料報,直到得到對方的確認為止。為什麼tcp是可靠的資料傳輸呢?

tcp報文

tcp的3次握手和4四揮手

udp協議

不可靠傳輸,」報頭」部分一共只有8個位元組,總長度不超過65,535位元組,正好放進乙個ip資料報。

tcp協議雖然安全性很高,但是網路開銷大,而udp協議雖然沒有提供安全機制,但是網路開銷小,在現在這個網路安全已經相對較高的情況下,為了保證傳輸的速率,我們一般還是會優先考慮udp協議!

C語言網路程式設計 C S架構模板

進行socket程式設計的常用函式有 socket 建立乙個socket bind 用於繫結ip位址和埠號到socket connect 該函式用於繫結之後的client端與伺服器建立連線 listen 設定能處理的最大連線要求,listen 並未開始接收連線,只是設定socket為listen模式...

socket網路程式設計TCP中C S架構函式框架

建立套接字 socket 填充伺服器網路資訊結構體 sockaddr in 將套接字與伺服器網路資訊結構體繫結 bind 將套接字設定為被動監聽狀態 listen 阻塞等待客戶端的連線請求 accept 進行通訊 recv send 建立套接字 socket 填充伺服器網路資訊結構體 sockadd...

TCP IP網路程式設計

tcp ip 是供已連線網際網路的計算機進行通訊的通訊協議。tcp ip 定義了裝置 並非只有計算機 如何連入網際網路,以及資料如何在它們之間傳輸的標準。ip internet protocol 網際網路協議。從這個名稱我們就可以知道ip協議的重要性。在現實生活中,我們進行貨物運輸時都是把貨物包裝成...