tcp和ip協(xié)議中三次握手,因為客戶端和服務(wù)端之間請求洋魂,當(dāng)客戶端發(fā)起請求的時候都會給出序列號惫谤,而在服務(wù)端接收到信號之后會給出確認(rèn)號(之前的序列號+1),并且給出自己生成的另外一個序列號近零。
在三次握手的過程中一直都是按照雙方生成的序列號來通訊的诺核。每次握手的時候確認(rèn)號都是在對方的給出的序列號上加一,并且將自己的序列號返回出去久信〗焉保總之,自己不在自己的序列號上加裙士,只在別人的序列號上加陈瘦,加了的就叫做確認(rèn)號。
然后有時候網(wǎng)絡(luò)比較忙潮售,對方?jīng)]有回復(fù)痊项,可能會再發(fā)一次請求。但是可能存在你發(fā)過去之后對方的就發(fā)信心過來了酥诽,存在是否需要重新傳的問題鞍泉。解決辦法就是在有效時間中不去重傳。這就是重傳計時器的作用
而在tcp報文中序列號是32bit肮帐,確認(rèn)號也是32位的咖驮。
確認(rèn)號+序列號+首部長度 +保留位+ 標(biāo)志位
標(biāo)志位:
1.緊急位URG,標(biāo)記為1時训枢,表示這個報文是緊急的托修,為0表示無效,這個位和緊急指針有關(guān)(為0時無效)
2.確認(rèn)號有效否ACK恒界,如果為0表示無效睦刃,縱觀三次握手中,只有第一次發(fā)起請求的時候才為0十酣,因為沒有確認(rèn)號可以確認(rèn)
- 推送位涩拙?际长??push
- RES重置位兴泥,一般不使用工育,因為有風(fēng)險
- 同步位為1,表示序列號開始有效搓彻,為0表示無效如绸,所以SYN為1,ACK為0旭贬,表示第一次握手怔接。但是之后SYN就都為0了,有點容易搞錯骑篙。所以服務(wù)端和客戶端發(fā)出請求地第一次都是SYN為1
- FIN結(jié)束位 因為在網(wǎng)絡(luò)上蜕提,斷開是需要兩邊都斷開,服務(wù)端向客戶端地斷開/客戶端向服務(wù)端斷開靶端,所以一方向另外一方發(fā)出斷開請求的時候谎势,另外一方除了需要確認(rèn)斷開請求,還需要發(fā)送自己的斷開請求
16位窗口大小杨名,其記錄的是雙方的接受能力脏榆,比如一次接受5個,但是發(fā)15個報文台谍,后面10個就丟失了须喂。因為窗口大小會變化(滑動窗口),所以需要不斷確認(rèn)趁蕊,并且協(xié)商用最小的坞生。只要在窗口大小合適,報文就不會丟失掷伙。但是窗口大小是什么呢是己?在計算機中能夠處理的能力是有限的,多余的報文會被儲存在計算機的某塊內(nèi)存中任柜,也就是內(nèi)核的緩存區(qū)---沒能夠處理的報文都放在這里卒废,一一等著處理,也就是網(wǎng)絡(luò)緩存區(qū)(不只是接受宙地,還有發(fā)送也需要緩存 )摔认。
16位TCP校驗和 校驗整個TCP報文
16位緊急指針
選項
數(shù)據(jù)
主機到主機
- 主機將要請求的進(jìn)程包裝成TCP首部,說明白原進(jìn)程地址和目標(biāo)進(jìn)程地址(保證進(jìn)程間通信)
- IP首部宅粥,說明這個是哪個主機來的参袱,要去哪里(保證網(wǎng)絡(luò)間通信)
- 原mac地址,和目標(biāo)mac地址 交換機(保證本地通信)
- 前導(dǎo)碼,標(biāo)記即將傳導(dǎo)報文