運輸層3——傳輸控制協議TCP概述

寫在前面:本文章是針對《計算機網絡第七版》的學習筆記html

運輸層1——運輸層協議概述編程

運輸層2——用戶數據報協議UDP緩存

運輸層3——傳輸控制協議TCP概述網絡

運輸層4——TCP可靠運輸的工做原理socket

運輸層5——TCP報文段的首部格式函數

運輸層6——TCP可靠傳輸的實現學習

運輸層7——TCP的流量控制和擁塞控制spa

運輸層8——TCP運輸鏈接管理操作系統

[TOC]### 1. TCP最主要的特色計算機網絡

  • TCP是面向鏈接的運輸層協議。也就是說TCP在使用以前,必須先創建TCP鏈接。

  • 每個TCP鏈接中只能有兩個端點,也就是說TCP是點對點的通訊。

  • TCP提供可靠交付的服務,無差錯,不丟失,不重複,按序到達。

  • TCP提供全雙工通訊。TCP容許通訊雙方的應用進程在任什麼時候候都能發送數據。TCP鏈接的兩端都設有發送緩存和接收緩存,用來臨時存儲雙向通訊的數據。

  • 面向字節流。TCP中的「流」是指流入到進程或從進程中流出的字節序列。

面向字節流:雖然應用程序和TCP的交互是一次一個數據塊(大小不等),可是TCP把應用程序交下來的數據只看出一連串的無結構字節流。TCP不知道字節流的具體含義,也不保證接收方應用程序所收到的數據塊和發送方應用程序所發出的數據塊之間的大小關係。可是接收方應用程序收到的字節流必須與發送方發送的字節流徹底一致。以下圖所示:

5d3552d50225853382

上圖所示只是一個虛鏈接,並非正在的物理鏈接。實際上,TCP報文段要先發送到IP層,加上IP首部後,再傳送帶數據鏈路層,再加上數據鏈路層的首部和尾部後,才離開主機發送到物理鏈路。

2. TCP的鏈接

TCP的端點稱爲套接字(socket)或者插口。能夠表示爲:

套接字 = (IP地址:端口號)

每一條TCP鏈接惟一地被通訊兩端的兩個端點所肯定。即:

TCP鏈接 ::= {socket1, socket2} = {(IP1:port1), (IP2:port2)}

ps:同一個IP地址能夠用不少個不一樣的TCP鏈接,而同一個端口號也能夠出如今多個不一樣的TCP鏈接中。

3. socket在不一樣場景中的含義

  • 容許應用程序訪問連網協議的應用編程接口API,即運輸層和應用層之間的一種接口,稱爲socket API。

  • 在socket API 中使用的函數名也叫作socket。

  • 調用socket函數的端點也稱爲socket。

  • 調用socket函數時,其返回值稱爲socket描述符,也能夠簡稱爲socket。

  • 在操做系統內核中的連網協議的Berkeley實現,稱爲socket實現。