TCP報文格式詳解

?TCP協議只定義了一種報文格式

?????建立、拆除連接、傳輸數據使用同樣的報文


?TCP報文格式

TCP報文段首部(20個字節)

?源端口和目的端口:各占2個字節,16比特的端口號加上32比特的IP地址,共同構成相當于傳輸層服務訪問點的地址,即“插口”;

?這些端口可用來將若干高層協議向下復用;

序號字段和確認序號字段:

?序號:占4個字節,是本報文段所發送的數據部分第一個字節的序號。在TCP傳送的數據流中,每一個字節都有一個序號。例如,一報文段的序號為300,而起數據供100字節,則下一個報文段的序號就是400;

?確認序號:占4字節,是期望收到對方下次發送的數據的第一個字節的序號,也就是期望收到的下一個報文段的首部中的序號;

?由于序號字段有32比特長,可以對4GB的數據進行編號,這樣就可保證當序號重復使用時,舊序號的數據早已在網絡中消失了;

數據偏移字段

?數據偏移:占4比特,表示數據開始的地方離TCP報文段的起始處有多遠。這實際上就是TCP報文段首部的長度。由于首部長度不固定,因此數據偏移字段是必要的。

?保留字段: 6比特,供今后使用,目前置為0。

6個比特的控制字段

?緊急比特URGent:當URG=1時,表明此報文應盡快傳送,而不要按原來的排隊順序來傳送。與“緊急指針”字段配合使用,緊急指針指出在本報文段中的緊急數據的最后一個字節的序號,使接收方可以知道緊急數據共有多長;

?確認比特ACK:只有當ACK=1時,確認序號字段才有意義;

?急迫比特PSH:當PSH=1時,表明請求遠地TCP將本報文段立即傳送給其應用層,而不要等到整個緩存都填滿了之后再向上交付。

?復位比特ReSeT:當RST=1時,表明出現嚴重差錯,必須釋放連接,然后再重建傳輸連接。復位比特還用來拒絕一個非法的報文段或拒絕打開一個連接;

?同步比特SYN:在建立連接時使用,當SYN=1而ACK=0時,表明這是一個連接請求報文段。對方若同意建立連接,在發回的報文段中使SYN=1和ACK=1。因此,SYN=1表示這是一個連接請求或連接接受報文,而ACK的值用來區分是哪一種報文;

?終止比特FINal:用來釋放一個連接,當FIN=1時,表明欲發送的字節串已經發完,并要求釋放傳輸連接;

窗口字段

?窗口Window:占2字節,表示報文段發送方的接收窗口,單位為字節。此窗口告訴對方,“在未收到我的確認時,你能夠發送的數據的字節數至多是此窗口的大小。”

?通知窗口advertised window:接收端根據其接收能力許諾的窗口值,是來自接收端的流量控制。接收端將通知窗口的值放在TCP報文的首部中,傳送給對方。

?擁塞窗口congestion window:是發送端根據網絡擁塞情況得出的窗口值,是來自發送端的流量控制。

?檢驗和覆蓋了整個的TCP報文段:TCP首部和TCP數據。這是一個強制性的字段,由發端計算和存儲,由收端進行驗證。

選項字段允許每臺主機設定能夠接受的最大TCP載荷能力(缺省536字節) 。


TCP分節的封裝

?TCP的數據編號與確認

數據流、報文段和序號

?TCP通信的動作

?????切割:根據適合傳輸的大小對數據流進行切割

?????????最大報文段長度<64Kbytes

?????????通常:MTU-(IP頭+TCP頭)

?????復原:用報文段恢復原始數據流的字節順序

?????序號:排序、查錯及數據流復原


?TCP數據流的切割與復原

報文序號

?依據數據流中的字節序號(流序號)

?報文序號為報文段中第一字節的流序號

????如:流序號=x,長度=L的報文段,則:

????????? 報文的序號為x,下一報文序號為x+L

?序號特點

???報文的順序關系

???數據流的位置,更便于流的復原

???需較大的序號空間(32bit,4Gbyte)

?例如:在一個報文中,序號為300,而報文中數據有100字節。

下一個報文符,其序號為400;

轉載于:https://www.cnblogs.com/hnrainll/archive/2011/08/31/2160682.html

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/news/448159.shtml
繁體地址,請注明出處:http://hk.pswp.cn/news/448159.shtml
英文地址,請注明出處:http://en.pswp.cn/news/448159.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Vue 生命周期中 mounted( ) 和 created( ) 的區別

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 一、什么是生命周期&#xff1f; 用通俗的語言來說&#xff0c;就是Vue中實例或者組件從創建到消滅中間經過的一系列過程。雖然不太嚴謹…

科目三考試

馬上要考大路了&#xff0c;考科目三考試必須做到什么事啊&#xff1f; 2012-5-30 8:46:23檢舉  注意事項   1、上車后確認車上電腦信息后&#xff0c;關好車門&#xff0c;系好安全帶&#xff0c;打左轉向燈起步。   2、直線行駛路段必須使用二檔行駛。否則將被判…

基于java的數據結構學習——數組實現的棧以及簡單應用

棧 Stack 棧是一種線性結構相比數組&#xff0c;棧對應的操作是數組的子集只能從一端添加元素&#xff0c;也只能從一端取出元素這一端稱為棧頂棧是一種后進先出的數據結構 棧的應用 無處不在的Undo操作&#xff08;撤銷&#xff09;括號匹配&#xff08;編譯器&#xff09;程…

Python 總結題目

題例1 # 打印如下長方形&#xff1a; ************ * * * * ************ # 打印如下長方形&#xff1a; print("*****************") print("* *") print("* *") print("****************…

vue : 引入、安裝 jquery 、bootstrap

一、vue安裝jquery 前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1、新建一個vue工程。 2、在項目文件夾下&#xff0c;使用命令 npm install jquery --save-dev 引入jquery。 np…

2013駕考科目三考試難點解析

原來規定科目三考試上車準備、起步、直線行駛等13個道路駕駛技能項目。123號令實施后&#xff0c;科目三考試分兩部分。道路駕駛技能考試項目增加到16項&#xff0c;增加了加減擋位操作、路口左轉彎、路口右轉彎3個考試項目&#xff0c;駕駛里程也增加。如何順利通過2013駕考科…

leetcode練習——棧(1)

題號20&#xff1a;Invalid Parentheses Given a string containing just the characters (, ), {, }, [ and ], determine if the input string is valid. An input string is valid if: Open brackets must be closed by the same type of brackets.Open brackets must be…

Asp.Net MVC 頁面代碼壓縮篩選器-自定義刪除無效內容

Asp.Net MVC 頁面代碼壓縮篩選器 首先定義以下篩選器&#xff0c;用于代碼壓縮。 /*頁面壓縮 篩選器*/public class WhiteSpaceFilter : Stream{private Stream _shrink;private Func<string, string> _filter;public WhiteSpaceFilter(Stream shrink, Func<string, s…

基于java的數據結構學習——數組實現的隊列和循環隊列及性能對比

隊列 Queue 隊列也是一種線性結構相比數組&#xff0c;隊列對應的操作是數組的子集只能從一端&#xff08;隊尾&#xff09;添加元素&#xff0c;只能從另一端&#xff08;隊首&#xff09;取出元素隊列是一種先進先出的數據結構 隊列的實現及復雜度分析 Queue<E> voi…

新手如何準確的控制油門

日常練車還不賴&#xff0c;可是一換車就容易加大油門兒&#xff0c;有啥子辦法能美好的扼制油呢?和調的坐位有關系嗎? 答&#xff1a;油門兒跟剎車被視為交通工具扼制的魂靈。交通工具引擎發動機的油門兒&#xff0c;通常是靠踏板來扼制的&#xff0c;也稱加速踏板&#xff…

vue 項目:文件夾 結構 、配置詳解

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 1. 項目配置 首先&#xff0c;在確定好使用的框架和組件庫后&#xff0c;先要大致了解它們&#xff0c;做到文檔基本熟悉。本次開發使用…

hdoj2553(N皇后問題)

Problem : 2553 ( N皇后問題 ) Judge Status : Accepted RunId : 2619754 Language : G Author : huwenbiao Code Render Status : Rendered By HDOJ G Code Render Version 0.01 Beta/***************************************************************\ *Author:Hu…

基于java的數據結構學習——數組實現的棧以及簡單應用C++實現

基于java的數據結構學習——數組實現的棧以及簡單應用的 C 實現 源碼&#xff1a; // // Created by PC-Saw on 2019/1/3. //#ifndef DATA_STRUCTURE_ARRAYSTACK_H #define DATA_STRUCTURE_ARRAYSTACK_H#include "Stack.h" #include "MyArray.h"template&…

女性開車5大安全駕車好習慣 為您支招

一些女性車主技術不夠熟練&#xff0c;緊急處理能力差&#xff0c;開車過程中需要注意更多的細節。養成一些好習慣&#xff0c;對于女性車主來說&#xff0c;開車的安全度會大大提高。 ● 車窗上不掛毛絨玩具 汽車是生活的一部分空間&#xff0c;許多女性車主都喜歡把這部分空間…

DIV 半透明層、 CSS實現網頁 背景半透明

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 DIV半透明實現&#xff0c;使用CSS實現DIV成半透明效果&#xff0c;CSS實現層與背景半透明效果。 一、DIV CSS半透明基礎介紹 - …

node 安裝 webpack

首先要安裝 Node.js&#xff0c; Node.js 自帶了軟件包管理器 npm&#xff0c;Webpack 需要 Node.js v0.6 以上支持&#xff0c;建議使用最新版 Node.js。 用 npm 安裝 Webpack&#xff1a; $ npm install webpack -g此時 Webpack 已經安裝到了全局環境下&#xff0c;可以通過命…

Thinking in C++遇到的函數指針及應用

// // Created by PC-Saw on 2019/1/24. //#include <iostream>#define TEST 2/* 1. */ typedef int* (*(*fp1)(int))[10]; // 首先是一個函數指針&#xff0c;接受一個int型參數&#xff0c;返回一個指向10個int指針數組的指針 /* 2. */ typedef i…

html 標簽內背景圖片自適應 div 大小

前些天發現了一個巨牛的人工智能學習網站&#xff0c;通俗易懂&#xff0c;風趣幽默&#xff0c;忍不住分享一下給大家。點擊跳轉到教程。 只需通過css設置background-size屬性為contain&#xff0c;即 background-size:contain 注意&#xff1a;一定要在先設置background之…

Code Project精彩系列(轉)

Code Project精彩系列&#xff08;轉&#xff09; Applications Crafting a C# forms Editor From scratch http://www.codeproject.com/csharp/SharpFormEditorDemo.asp 建立一個類似C#的環境, 實現控件拖拉&#xff0c;屬性 Packet Capture and Analayzer 網絡封包截獲 http…

加速時如何換擋

加速時如何換擋&#xff0c;您知道嗎?為了使換擋過程順利進行&#xff0c;變速器內齒輪平穩嚙合&#xff0c;必須掌握好發動機轉速&#xff0c;在適當時機推動變速桿操縱齒輪嚙合。為此&#xff0c;要通過反復練習&#xff0c;一邊踩踏油門踏板&#xff0c;一邊聽發動機運轉聲…