2008年3月13日 星期四

封包,怎麼封怎們包?

封包一詞,是網路常見的名詞,我們現在使用的任何網路服務都跟封包有關。包含瀏覽網頁、收發e-mail等,都是建立在tcp/ip下的封包溝通行為。tcp/ip是互聯網路協定的泛稱,旗下包含了tcp協定、ip協定、http協定...等,並不是只有tcp和ip兩種協定。

網路將我們要發送的資料傳遞出去,並接收別人寄過來的資料。網路就像一個郵件傳遞通路,我們寄信前一定要填妥收件人地址和收件人姓名等等的細節,再把我們的資料放到信封裡封好寄出。封包就像是一個大信封,每層信封底下還包著小信封,直到最裡層才是我們要傳遞的資料。

OSI Model是一個網路協定的模型,他規範的所有通訊協定的架構,但這不是重點,我們常常使用的是tcp/ip協定,所以我們只討論tcp/ip下的封包。tcp/ip的封包分為四個層面,裡面有三層是交由軟體處理,最外面是由硬體處理。其架構如下:

[Ethernet Header] - [IP Header] - [TCP Header] - [HTTP Header] - [Data] - [FCS]

這一整串我們稱它為訊框(Frame),去掉藍色的部分才稱為封包(Packet),其中藍色的部分是由硬體(就是網路卡)包裝的。姑且不論每個Header是做什麼用的,我們需要知道的只在於封包的處理流程,假如我們接收一頁網頁,對方伺服器會丟出向上面那樣的訊框,我們的網路卡收到後,會將藍色的部分抽出來,分析後再往電腦內部送(此時藍色的部分已經被刪除了),接著進入到軟體的部分,你的作業系統會抽出IP header,確認這個ip(就是網路位址)是不是送給自己的,接著抽出tcp header(這邊比較困難,所以我這裡略過tcp的作用),處理後,再將封包送給瀏覽器,瀏覽器抽出http封包,發現這是網頁用的協定,再把Data抽出,顯示在網頁上。

假如我們是伺服器,過程只是顛倒而已,一樣透過層層的包裝,最後由網卡送出。我們常常聽到竊取封包的駭客伎倆,就是趁你的封包向外發送時,把你的封包攔截後偷看裡面的Data,在原封不動的送到目的地。

comput5

沒有留言: