2007年10月4日 星期四

TCP/IP協定介紹與封包概念

「協定」就是指共同制定的規範或是標準。因為網路是由一堆電腦組成的,他們必須要有共通的語言,就跟我們人一樣。所以便制定各種網路通訊協定,來讓電腦可以互相連線將訊息或資料傳送給對方。最廣為使用的TCP/IP協定 

剛剛說過我們可以把協定比喻為一種語言或方言,適用在不同的環境,其中TCP/IP就是網際網路所使用的通訊協定,而實際上,TCP/IP應該稱為TCP/IP協定組(TCP/IP Suite),這代表TCP/IP不止有TCP、IP兩種協定,也包括了HTTP等許多通訊協定,這些協定具有階層關係,共分成了四層的架構。

應用層(Application Layer)

傳輸層(Transport Layer)

網際網路層(Internet Layer)

實體層(Physical Layer)










我先不說明這四層的功能,之後我會介紹OSI七層,在去比照他們的關係,只要先知道,TCP/IP是由許多協定組成即可。

何謂封包?

某:請給我一瓶可樂

一瓶可樂」,是可樂的單位;而電腦傳送資料的單位,我們稱他叫「封包」(Packet)。

一個封包包含有發送端節點地址(IP)、接收端節點地址(IP)、和這兩個節點之間需要傳送的數據。

所有的封包都會有他自己的編號,而當某個編號的封包沒收到,或有錯誤時,便可要求發送端重新傳送封包,等到確定所有編號的封包都傳送完畢之後,這些有編號的封包便會依照順序重新組合,還原成原有的資料。

電腦上的資料通常是連續且長度很長的 (例如 100KB),這麼長的資料串無法一次在網路上傳完,所以需要把它分段 (例如分成 1KB 一段),一次傳一段。

分完段送上網路之後,接收端必須把這些分次收到的資料段重組回去。為了完成重組的動作,必須讓接收端知道那些資料段是同一組的,它們的先後順序為何等等,所以每個資料段都必須額外加上這些資料,稱之為標頭 (header)

一個標頭加上一段資料,就稱之為一個封包 (packet)。封包是網路傳輸的基本單位。

例如一個 100KB 的資料,分段之後會變成
[標頭1+資料段1]
[標頭2+資料段2]
[標頭3+資料段3]

每一個分段就是一個封包。

1 則留言:

如何在 golang 裡面引用 gitlab private repo

參考文章:https://stackoverflow.com/questions/27500861/whats-the-proper-way-to-go-get-a-private-repository 原文是用 gitlab.company.com 當範例,這邊改成一般帳號...