TCP和UDP的區別:
1)TCP是面向連接的,而UDP是無連接的
2)TCP提供可靠服務,而UDP不提供可靠服務,只是盡最大努力交付報文
3)TCP面向字節流,TCP把數據看成一串無結構的字節流,而UDP是面向報文的(UDP數據報+IP頭部=IP數據報)
4)TCP有擁塞控制,UDP沒有擁塞控制
5)TCP只提供點對點通信,而UDP提供點對點,點對多點,多點對多點的通信
6)TCP提供的是全雙工的可靠信道,而UDP提供的是不可靠信道
7)TCP的首部開銷有20個字節,而UDP的首部開銷只有8個字節
TCP報文格式
序號:該報文段在整個報文中的序號,為本報文段發送的第一個字節的序號,比如該報文段第一個字節的序號為100,則該報文段的序號為100
確認序號:指明下一個期待收到的字節序號,比如當前報文段的序號為100,報文段的數據部分共有200個字節,則確認序號為100+200=300
首部長度:TCP報文首部長度,也是TCP報文數據部分的偏移量,以為存在選項部分
保留位:目前沒有被使用,設置為0
標志位:
URG=1:緊急比特,報文中有緊急數據,應該盡快傳遞
ACK=1:確認比特,說明該報文是一個發送方返回的確認報文
PSH=1:推送比特,指示接收方在接收到報文后應該盡快交給應用進程,而不是等到整個緩存填滿才發送給應用進程
RST=1:復位比特,TCP連接中出現嚴重差錯,必須釋放連接,然后重新建立連接
SYN=1:同步比特,表示TCP連接正在建立中,該報文是一個協商報文
FIN=1:終止比特,發送端已完成數據傳輸,請求釋放連接
窗口大小:接收窗口的大小,表示接收端希望接受的字節數
校驗和:反碼求和,發送端計算,結果存入校驗和字段,接收端校驗,校驗結果和校驗和字段結果不同則丟棄報文,相同也不代表該報文沒有出錯,所以TCP的校驗機制不能檢查出所有等到錯誤,所以我們需要在應用層建立一套新的數據校驗機制:MD5加密,在發送數據前使用MD5加密,並且將MD5摘要一起發送,接收端接收數據后再次進行MD5加密,加密結果等於發送的加密密鑰則數據沒有出錯,不等於在數據出錯了,拋棄該報文
緊急指針:僅在緊急比特URG=1時才有效,指明該TCP報文中緊急數據的字節數,同時也指明了緊急數據的末尾位置,因為緊急數據后面就是普通數據,即使窗口為0,也可以發送緊急數據
選項:(TCP報文除開選項和數據部分,總共20個字節)
UDP報文格式:(UDP報文首部8個字節)
MAC幀格式:
以太網的幀格式:
Preamble:前導同步碼7個字節+幀開始定界符1個字節=8個字節
Destination MAC adress:目的MAC地址
Source MAC adress:源MAC地址
Type/Length:幀類型
User date :數據信息
Frame Check Sequence:幀校驗序列
因此以太網幀的范圍是72-1526字節