go語言與網路程式設計

2021-08-26 05:57:44 字數 1741 閱讀 7602

協議

從應用的角度出發,協議可理解為「規則」,是資料傳輸和資料的解釋的規則。假設,a、b雙方欲傳輸檔案。規定:

 第一次,傳輸檔名,接收方接收到檔名,應答ok給傳輸方;

 第二次,傳送檔案的尺寸,接收方接收到該資料再次應答乙個ok;

 第三次,傳輸檔案內容。同樣,接收方接收資料完成後應答ok表示檔案內容接收成功。

由此,無論a、b之間傳遞何種檔案,都是通過三次資料傳輸來完成。a、b之間形成了乙個最簡單的資料傳輸規則。雙方都按此規則傳送、接收資料。a、b之間達成的這個相互遵守的規則即為協議。

這種僅在a、b之間被遵守的協議稱之為原始協議。

當此協議被更多的人採用,不斷的增加、改進、維護、完善。最終形成乙個穩定的、完整的檔案傳輸協議,被廣泛應用於各種檔案傳輸過程中。該協議就成為乙個標準協議。最早的ftp協議就是由此衍生而來。

典型協議

傳輸層 常見協議有tcp/udp協議。

應用層 常見的協議有http協議,ftp協議。

網路層 常見協議有ip協議、icmp協議、igmp協議。

網路介面層 常見協議有arp協議、rarp協議。

tcp傳輸控制協議(transmission control protocol)是一種面向連線的、可靠的、基於位元組流的傳輸層通訊協議。

udp使用者資料報協議(user datagram protocol)是osi參考模型中一種無連線的傳輸層協議,提供面向事務的簡單不可靠資訊傳送服務。

http超文字傳輸協議(hyper text transfer protocol)是網際網路上應用最為廣泛的一種網路協議。

ftp檔案傳輸協議(file transfer protocol)

ip協議是網際網路互聯協議(internet protocol)

icmp協議是internet控制報文協議(internet control message protocol)它是tcp/ip協議族的乙個子協議,用於在ip主機、路由器之間傳遞控制訊息。

igmp協議是 internet 組管理協議(internet group management protocol),是網際網路協議家族中的乙個組播協議。該協議執行在主機和組播路由器之間。

arp協議是正向位址解析協議(address resolution protocol),通過已知的ip,尋找對應主機的mac位址。

rarp是反向位址轉換協議,通過mac位址確定ip位址。

package main

import (

「net」

「fmt」

)func main()

defer listener.close() // 主協程結束時,關閉listener

fmt.println(「伺服器等待客戶端建立連線…」)

// 等待客戶端連線請求

conn, err := listener.accept()

if err != nil

defer conn.close() // 使用結束,斷開與客戶端鏈結

fmt.println(「客戶端與伺服器連線建立成功…」)

// 接收客戶端資料

buf := make(byte, 1024) // 建立1024大小的緩衝區,用於read

n, err := conn.read(buf)

if err != nil

fmt.println(「伺服器讀到:」, string(buf[:n])) // 讀多少,列印多少。

}

go語言網路程式設計

go語言的defer,你真的懂了嗎?這篇文章通過幾個生動的例子闡述了go語言當中return的執行順序和原理,也解答了為什麼defer明明執行在return之前,但是看起來卻是在return之後進行的 package main import net fmt func main else else e...

Go語言之Go語言網路程式設計

go語言的 net 包中有乙個 tcpconn 型別,可以用來建立 tcp 客戶端和 tcp 伺服器端間的通訊通道,tcpconn 型別裡有兩個主要的函式 func c tcpconn write b byte n int,err os.error func c tcpconn read b byt...

go語言網路程式設計 TCP程式設計

一.tcp socket程式設計 go的tcp服務端流程分為三步 1 監聽埠 2 接收客戶端請求連線,返回conn 3 建立goroutine處理請求 乙個例項如下 tcp服務端 package main import fmt net bufio func process conn net.conn...