深入理解計算機原理第十一章 網路程式設計

2021-08-07 19:14:05 字數 3123 閱讀 8778

客戶端-伺服器由4個事務組成,如下圖

認識到客戶端和伺服器是程序,而不是常常提到的機器或者主機,這很重要。

對於乙個主機而言,網路只是又一種i/o裝置,作為資料來源和資料接收方。就想鍵盤、滑鼠等其他i/o一樣,作為乙個檔案進行操作。

圖 乙個網路主機的硬體組成

lan:區域網

1、較小的區域網(例如乙個樓層),如下圖所示,是用連線主機的雙絞線和集線器(hub)組成,並稱之為:乙太網段。

圖 乙太網段

2、較大的區域網(跨越建築物或者校區),如下圖所示,是由網橋將不同的乙太網段組成起來,稱之為:橋接乙太網。

圖 橋接乙太網

3、簡化,上兩幅圖我們經常簡化如下圖,代表乙個區域網:

4、wan:廣域網

在更高層次中,多個不相容的區域網可以通過叫做路由器的特殊工具連線起來,組成乙個網際網路絡.

每台路由器對於它所連線到的每個網路都有乙個介面卡(埠,或者說是網口,類似pc的網路介面卡(網絡卡))。

現在看起來我們打通了所有的主機,利用集線器、網橋、路由器,但是這並不代表主機之間的資料就可以隨意串流。為了資料的傳達到該到的地方,而且能夠完整的傳達到。需要很多不同的協議,在本次通訊中是使用了tcp協議,當然路由器之間也有更多的協議幫助我們傳播資料,如下圖所示,對於我們要傳播的data,還需要很多一定的加工,符合協議要求才能傳送到對的地方。

ph: 網際網路絡包頭

fh1: lan1幀頭

1、 每台網際網路主機都執行實現tcp/ip協議的軟體。

2、網際網路的客戶端和伺服器混合使用套接字介面函式和unix i/o函式來進行通訊。

3、套接字函式典型的是作為會陷入核心的系統呼叫來實現的,並呼叫各種核心模式的tcp/ip函式

ip協議提供基本的命名方法遞送機制

tcp是乙個構建在ip之上的複雜協議,提供了程序間可靠的全雙工連線。

從程式設計師的角度,可以把網際網路看做乙個世界範圍的主機集合,它滿足以下特性:

1、主機集合被對映成一組32位的ip位址。

2、這組ip位址被對映成一組叫做網際網路網域名稱的識別符號。

3、網際網路主機上的程序能夠通過連線和任何其他網際網路主機上的程序通訊。

ip的表達方式網路位元組順序(大端法)(高–>低)

主機位元組順序(小端法)(低–>低)

在程式中發資料報時,將主機位元組順序—轉換—>網路位元組順序,收資料報時網—->主,這是因為基於x86平台的pc機是小端位元組序(主)。(注:一些嵌入式平台為大端序)

網際網路客戶端和伺服器互相通訊時使用的是ip位址。

網際網路定義了網域名稱集合和ip位址集合之間的對映。

客戶端和伺服器通訊時使用的是ip位址,然而對於人們而言大整數是很難記住的,因此網際網路也定義了一組更加人性化的網域名稱,以及一種將網域名稱對映到ip位址的機制。

網域名稱是一串用點分隔的單詞(字母、數字和破折號),它有自己的層級結構。

除了根節點,第二層是一組一級網域名稱,常見的一級網域名稱有com、edu、gov、org等。

二級網域名稱如mit、berkeley、csdn等。

dns(domain name system, 網域名稱系統)

1、網域名稱集合和ip位址集合之間的對映由分布世界範圍內的資料庫(dns,網域名稱系統)來維護。

2、乙個網域名稱可以與乙個ip位址一一對應;或者多個網域名稱對映到多個ip位址;或者某些合法的網域名稱沒有ip位址的對映。

3、每台網際網路主機都有本地定義的網域名稱localhost,這個網域名稱是對映為本地回送位址(loopback address)127.0.0.1。

客戶端埠號51212是核心分配的臨時埠號。

伺服器端口號80是和web服務相關聯的知名埠號。

深入理解計算機系統 第十一章 網路程式設計 (2)

一 web基礎 web客戶端和伺服器之間的互動用的是乙個基於文字的應用級協議,叫做http hypertext transfer protocol,超文字傳輸協議 http是乙個簡單的協議。乙個web客戶端 即瀏覽器 開啟乙個到伺服器的網際網路連線,並且請求某些內容。伺服器響應所請求的內容,然後關閉...

計算機深入理解 一

1.1 匯流排 匯流排是用來在計算機各個部件中傳遞資料的快遞員,這個快遞員攜帶的資料是有限制的通常是4個位元組32位,8個位元組64位。1.2 io 裝置 io 裝置是計算機與外界資料交換的快遞員。包括四個功能不一的快遞員 1 作為使用者輸入的鍵盤和滑鼠 2 作為使用者輸出的顯示器 3 用來長期儲存...

深入理解計算機 第一章

本章主要就是講解述一些計算機的基本認識,為後面的內容鋪墊一下。1.1資訊就是位結合上下文的表現。1.2hello.c預處理 加入標頭檔案庫 hello.i編譯器 翻譯為低階機器語言指令 hello.s彙編器 二進位制檔案 hello.o聯結器 將呼叫函式加入 hello 1.3了解編譯器的用處 1得...