學習筆記 11

2022-09-19 05:21:11 字數 2363 閱讀 1603

tcp/ip 是網際網路的基礎。tcp代表傳輸控制協議。ip代表網際網路協議。目前有兩個版本的ip,即ipv4和ipv6。ipv4使用32位位址,ipv6則使用128位位址。本節圍繞ipv4進行討論,它仍然是目前使用最多的ip版本。tcp/ip的組織結構分為幾個層級,通常稱為tcp/ip堆疊。

主機是支援tcp/ip協議的計算機或裝置。每個主機由乙個32位的ip位址來標識。為了方便起見,32位的ip 位址號通常用點記法表示,除此之外也可以用主機名來表示。實際上,應用程式通常使用主機名而不是ip 位址。在這個意義上說,主機名就等同於ip位址,因為給定其中乙個,我們可以通過dns(網域名稱系統)伺服器找到另乙個,它將ip位址轉換為主機名,反之亦然。

ip位址

ip位址分為兩部分,即networkid欄位和 hostid欄位。根據劃分。ip位址分為a-e 類。發往ip位址的資料報首先被傳送到具有相同networkid的路由器。路由器將通過hostid將資料報**到網路中的特定主機。每個主機都有乙個本地主機名localhost,預設ip位址為127.0.0.1。本地主機的鏈路層是乙個回送虛擬裝置,它將每個資料報路由回同乙個localhost。這個特性可以讓我們在同一臺計算機上執行tcp/ip 應用程式,而不需要實際連線到網際網路。

ip協議用於在ip 主機之間傳送/接收資料報。ip盡最大努力執行。ip 主機只向接收主機傳送資料報,但它不能保證資料報會被傳送到它們的目的地,也不能保證按順序傳送。這意味著 ip並非可靠的協議。必要時,必須在ip 層的上面實現可靠性。

ip資料報由ip頭、傳送方ip 位址和接收方ip 位址以及資料組成。每個ip資料報的大小最大為64kb。ip 頭包含有關資料報的更多資訊,例如資料報的總長度、資料報使用 tcp 還是 udp、生存時間(ttl)計數、錯誤檢測的校驗和等。

路由器是接收和**資料報的特殊ip主機,如果ip主機相距很遠,需要借助路由器來**資料報。每個ip包在1p報頭中都有乙個8位生存時間(ttl)計數,其最大值為255。在每個路由器上,ttl會減小1。如果ttl減小到0,而包仍然沒有到達目的地,則會直接丟棄它。

udp(使用者資料報協議)在ip上執行,用於傳送/接收資料報。與ip類似,udp不能保證可靠性,但是快速高效。它可用於可靠性不重要的情況。

tcp(傳輸控制協議)是一種面向連線的協議,用於傳送/接收資料流。tcp也可在ip 上執行,但它保證了可靠的資料傳輸。通常,udp類似於傳送郵件的usps,而tcp類似於**連線。

在各主機上,多個應用程式(程序)可同時使用tcp/udp.每個應用程式由三個組成部分唯一標識

應用程式=(主機ip,協議,埠號)

協議是tcp或udp,埠號是分配給應用程式的唯一無符號短整數。要想使用udp或tcp,應用程式(程序)必須先選擇或獲取乙個埠號。下圖給出了常見的應用程式的預設埠號。

計算機可以使用大端位元組序,也可以使用小端位元組序。在網際網路上,資料始終按網路序排列,就是大端。一些庫函式比如htons()、htonl()、ntohs()、ntohl()等可以在主機序和網路序之間轉換資料。

網路程式設計平台

伺服器-客戶機計算模型

大多數網路程式設計任務都基於伺服器-客戶機計算模型。在伺服器-客戶機計算模型中,我們首先在伺服器主機上執行伺服器程序。然後,我們從客戶機主機執行客戶機。在 udp 中,伺服器等待來自客戶機的資料報,處理資料報並生成對客戶機的響應。在tcp 中、伺服器等待客戶機連線。客戶機首先連線到伺服器,在客戶機和伺服器之間建立乙個虛擬電路。建立連線後,伺服器和客戶機可以交換連續的資料流。

套接字程式設計

在網路程式設計中,tcp/ip 的使用者介面是通過一系列c語言庫函式和系統呼叫來實現的,這些函式和系統呼叫統稱為套接字 api。為了使用套接字api,我們需要套接字位址結構,它用於標識伺服器和客戶機。netdb.h和sys/socket.h中有套接字位址結構的定義。

套接字位址

struct sockaddr_in;

struct in_addr;

套接字 api

伺服器必須建立乙個套接字,並將其與包含伺服器ip位址和埠號的套接字位址繫結。它可以使用乙個固定埠號,或者讓作業系統核心選擇乙個埠號(如果 sin port為0)。為了與伺服器通訊,客戶機必須建立乙個套接字。對於upd 套接字,可以將套接字繫結到伺服器位址。如果套接字沒有繫結到任何特定的伺服器,那麼它必須在後續的 sendto()/recvfrom()呼叫中提供乙個包含伺服器ip和埠號的套接字位址。

學習筆記1 1

1.virtual修飾符會被 繼承的。private 也被整合,只事派生類沒有訪問許可權而已。virtual可加可不加。子類的空間裡有父類的所有變數 static除外 同乙個函式只存在乙個實體 inline除外 子類覆蓋它的函式不加virtual 也能實現多型。在子類的空間裡,有父類的私有變數。私有...

學習筆記11

raid 10 raid1 raid0技術的組合體 raid10需要至少4塊硬碟來組建,其中先分別兩兩製作成raid1磁碟陣列,以保證資料的安全性 然後再對兩個raid1磁碟陣列實施raid0技術,進一步提高硬碟裝置的讀寫速度。1.讀寫速度 2.資料不易丟失 lvm邏輯卷管理器 lvm允許使用者對硬...

ant 學習筆記11

我的專案目錄結構 test src webroot build.xml build.xml檔案 執行build.xml的方法 ant使用當前目錄下的build.xml執行ant,執行預設的target。ant buildfile test.xml 使用當前目錄下的test.xml執行ant,執行預設...