一、網路協議
一台機器把想表達的內容按照某種約定好的格式傳送出去,另外一台機器接收這些資訊後,按照約定的格式解析出來。這種約定的格式就是網路協議
二、網路分層
分層得原因在於網路環境過於複雜,不是乙個能夠集中控制的體系。全球數以億計的裝置和伺服器各有各的體系,都可以通過同一套網路協議切割成多個層次和結構,來滿足通訊需求。
osi標準七層模型、業界標準tcp/ip模型。
傳輸層:tcp/udp。從第一層到第三層都不可靠,tcp通過各種編號、重傳機制。讓本來不可靠的網路對於上層應用來講,變得可靠,哪有什麼應用層歲月靜好,只不過tcp層幫你負重前行。
從二層到四層都是在linux核心裡面處理的。應用層是使用者態的。核心對網路包的處理不區分應用。
應用層和核心互通的機制,就是通過socket系統呼叫。
socket不屬於哪一次層 ,它屬於作業系統的概念,非網路協議分層的概念。
三、tcp承載的面向連線的資料流
怎麼理解連線?本質上是客戶端和服務端維護連線,建立一定的資料結構來維護雙方的狀態,並歐諾個這樣的資料結構來保證面向連線的特性。tcp無法左右中間的任何通路,也沒有什麼虛擬的連線,中間的通路根本意思不到兩端使用的是tcp還是udp。
流量控制和擁塞控制其實就是根據收到的對端網路包,調整兩端資料結構的狀態。tcp協議設計理論上認為,這樣調整了資料結構的狀態,就呢過進行流量控制和擁塞控制,其實通路商是不是真的做到了,誰也管不著。
可靠:兩端資料結構在點名,順序到達是資料結構在排序,面向資料流實際是資料結構將零散的包,按照順序捏成乙個流發給應用層。連線讓分誤認為功夫在通路,其實功夫在兩端。
Socket網路通訊
服務端的程式如下 1.建立乙個伺服器端socket,即serversocket,指定繫結的埠,並監聽此埠8888 serversocket serversocket new serversocket 8888 socket socket null 記錄客戶端的數量 int count 0 syste...
socket網路通訊
read write recv send readv writev recvmsg sendmsg recvfrom sendto include ssize t read int fd,void buf,size t count ssize t write int fd,const void bu...
socket網路通訊《二》
socket網路通訊 本文注意基於socket來分析tcp連線建立過程。先回顧一下tcp連線建立過程 主機a執行的是tcp客戶端程式,主機b執行的是tcp伺服器程式,最初兩端tcp程序處於closed態,a主動開啟連線,對應客戶端connect函式發起連線,b被動接受連線,對應於伺服器listen函...