Day 3 網絡基礎

網絡基礎

一、什么是互聯網協議及為何要有互聯網協議 ?

  互聯網協議:指的就是一系列統一的標準,這些標準稱之為互聯網協議。互聯網的本質就是一系列的協議,總稱為‘互聯網協議’(Internet Protocol Suite)。

  互聯網協議的功能:定義計算機如何接入internet,以及接入internet的計算機通信的標準。

二、tcp/ip五層模型

  總結如下圖

?  tcp的三次握手和四次揮手,如下圖:

  socket:我們經常把socket翻譯為套接字,socket是在應用層和傳輸層之間的一個抽象層,它把TCP/IP層復雜的操作抽象為幾個簡單的接口供應用層調用已實現進程在網絡中通信。socket起源于UNIX,在Unix一切皆文件哲學的思想下,socket是一種"打開—讀/寫—關閉"模式的實現,服務器和客戶端各自維護一個"文件",在建立連接打開后,可以向自己文件寫入內容供對方讀取或者讀取對方內容,通訊結束時關閉文件。

?

  結論:唯一標示互聯網中唯一程序:ip+port.

  補充:socket層,位于應用層與傳輸層之間,把tcp/udp封裝起來,為開發人員提供簡單接口。所以,程序員只需要遵循socket的標準,寫出的程序自然遵循tcp或udp協議。

?

三、用戶上網流程  

第一步:本機獲取四大要素:

    • 本機的IP地址(Ipv4)
    • 子網掩碼
    • 網關的IP地址
    • DNS的IP地址

  網關:例如,從一個房間走到另一個房間,必然要經過一扇門。同樣,從一個網絡向另一個網絡發送信息,也必須經過一道“關口”,這道關口就是網關。顧名思義,網關(Gateway)就是一個網絡連接到另一個網絡的“關口”。也就是網絡關卡。

第二步:輸入網址

  打開瀏覽器,想要訪問Google,在地址欄輸入了網址:www.google.com。

第三步:dns協議(基于udp協議)

  DNS(Domain Name System,域名系統),因特網上作為域名和IP地址相互映射的一個分布式數據庫,能夠使用戶更方便的訪問互聯網,而不用去記住能夠被機器直接讀取的IP數串。通過主機名,最終得到該主機名對應的IP地址的過程叫做域名解析(或主機名解析)。DNS協議運行在UDP協議之上。

  DNS名解析過程,如下圖:

?

  遞歸查詢:問路,別人幫自己問路

  迭代查詢:問路,別人說我不知道,但是我可以告訴你誰知道,你自己去問

  13臺根服務器:要用來管理互聯網的主目錄,全世界目前只有13臺。1個為主根服務器,放置在美國。其余12個均為輔根服務器,其中9個放置在美國,歐洲2個,位于英國和瑞典,亞洲1個,位于日本。

  域名定義:http://jingyan.baidu.com/article/1974b289a649daf4b1f774cb.html

  頂級域名:以.com,.net,.org,.cn等等屬于國際頂級域名,根據目前的國際互聯網域名體系,國際頂級域名分為兩類:類別頂級域名(gTLD)和地理頂級域名(ccTLD)兩種。類別頂級域名是以"COM"、"NET"、"ORG"、"BIZ"、"INFO"等結尾的域名,均由國外公司負責管理。地理頂級域名是以國家或地區代碼為結尾的域名,如"CN"代表中國,"UK"代表英國。地理頂級域名一般由各個國家或地區負責管理。

  二級域名:二級域名是以頂級域名為基礎的地理域名,比喻中國的二級域有,.com.cn,.net.cn,.org.cn,.gd.cn等.子域名是其父域名的子域名,比喻父域名是abc.com,子域名就是www.abc.com或者*.abc.com.。一般來說,二級域名是域名的一條記錄,比如alidiedie.com是一個域名,www.alidiedie.com是其中比較常用的記錄,一般默認是用這個,但是類似*.alidiedie.com的域名全部稱作是alidiedie.com的二級。

第四步:Http內容

  假定這個部分的長度為4960字節,被嵌在TCP數據包之中。

第五步:TCP協議

  TCP數據包需要設置端口,接收方(Google)的HTTP端口默認是80,發送方(本機)的端口是一個隨機生成的1024-65535之間的整數,假定為51775。

  TCP數據包的標頭長度為20字節,加上嵌入HTTP的數據包,總長度變為4980字節。

第六步:IP協議

  然后,TCP數據包再嵌入IP數據包。IP數據包需要設置雙方的IP地址,這是已知的,發送方是192.168.1.100(本機),接收方是172.194.72.105(Google)。

  IP數據包的標頭長度為20字節,加上嵌入的TCP數據包,總長度變為5000字節。

第七步:ethernet以太網協議

  最后,IP數據包嵌入以太網數據包。以太網數據包需要設置雙方的MAC地址,發送方為本機的網卡MAC地址,接收方為網關192.168.1.1的MAC地址(通過ARP協議得到)。

  以太網數據包的數據部分,最大長度為1500字節,而現在的IP數據包長度為5000字節。因此,IP數據包必須分割成四個包。因為每個包都有自己的IP標頭(20字節),所以四個包的IP數據包的長度分別為1500、1500、1500、560。

第八步:服務器端響應

  經過多個網關的轉發,Google的服務器172.194.72.105,收到了這四個以太網數據包。

  根據IP標頭的序號,Google將四個包拼起來,取出完整的TCP數據包,然后讀出里面的”HTTP請求”,接著做出”HTTP響應”,再用TCP協議發回來。

  本機收到HTTP響應以后,就可以將網頁顯示出來,完成一次網絡通信。

?

轉載于:https://www.cnblogs.com/LiChaoAI/p/6890367.html

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

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

相關文章

leetcode 349. 兩個數組的交集

給定兩個數組,編寫一個函數來計算它們的交集。 示例 1: 輸入:nums1 [1,2,2,1], nums2 [2,2] 輸出:[2] 示例 2: 輸入:nums1 [4,9,5], nums2 [9,4,9,8,4] 輸出:[9,4] 代碼 class Solution…

a4988 脈寬要求_基于STM32的微型步進電機驅動控制器設計

基于STM32的微型步進電機驅動控制器設計摘 要: 設計了一種微型步進電機驅動控制器,通過上位機界面修改步進電機轉速、旋轉角度、細分系數。該設計以STM32F103T8U6作為主控制器,以A4988步進電機驅動設備,上位機串口界面作為人機接口…

運行linux的機器死機了_如何在任何機器上輕松運行任何Linux工具

運行linux的機器死機了by Flavio De Stefano由弗拉維奧德斯特凡諾(Flavio De Stefano) 如何在任何機器上輕松運行任何Linux工具 (How to easily run any Linux tool on any machine) Have you ever encountered a situation like the ones below?您是否遇到過以下情況&#x…

【實戰】爛泥:一次糾結的系統安裝

這應該是昨天的事了,因為昨天太忙了,就沒有貼出來,今天下午我想了想還是貼出來吧。一是給自己一個提醒,二是也給壇子里面的午飯們再以后安裝系統中提供一種思路。 環境:thinkpad x100e筆記本,2G內存&#x…

Android動態改變TextView字體顏色

Android動態改變TextView字體顏色 分類&#xff1a; Android 2012-06-04 21:56 141人閱讀 評論(0) 收藏 舉報androidcolorslayout必須在在res/color文件夾下面創建一個selector的xml [html] view plaincopyfont_style_colors.xml <selector xmlns:android"http://…

關于小程序的一些坑的總結

最近開發的小程序&#xff0c;有很多的坑。 1.底部的tabbar 不可更改尺寸和字體的大小。限制的還是蠻死的&#xff01;不知道是不是我沒找到方法去修改還是咋的。淡淡的憂桑&#xff5e;&#xff5e;&#xff5e; 2.可以動態的設置小程序的頂部導航欄的字&#xff0c;但是不可…

開源項目貢獻者_如何認識您的開源項目貢獻者并發展您的社區

開源項目貢獻者by David Herron大衛赫倫(David Herron) 如何認識您的開源項目貢獻者并發展您的社區 (How to recognize your open source project contributors and grow your community) There’s a truism — if a community is not growing, it is slowly dying. How is yo…

華農java實驗7_國家實驗教學示范中心

我校有生物學實驗教學中心、作物學實驗教學中心、水產養殖實驗教學中心、動物醫學實驗教學中心4個國家級實驗教學示范中心&#xff0c;10個省級實驗教學示范中心。生物學實驗教學中心華中農業大學生物學實驗教學中心成立于2001年7月&#xff0c;是直屬于生命科學技術學院的校級…

jsonpickle數據序列化

json&pickle數據序列化 json 用于字符串和python數據類型間進行轉換 pickle 用于python特有的類型 和 python的數據類型間進行轉換序列化&#xff1a;把字典或者字符串的內存對象 存到硬盤上&#xff1b; 反序列化&#xff1a;就是從硬盤上加載出來 json序列化與反序列化…

array_walk與array_map的區別

1.array_walk是用于用戶自定義的函數&#xff0c;所以想用array_walk($aIds, "trim");去掉數據元素中的空格是達不到目的的只能用array_walk($aIds, create_function(&$val, $val trim($val);)); 2.想完成上邊的需求其實更加合適用$aNewIds array_map("t…

shopify二次開發教程_詳細教程:如何將Shopify的Storefront API與React和Redux結合使用...

shopify二次開發教程by Chris Frewin克里斯弗里溫(Chris Frewin) 詳細教程&#xff1a;如何將Shopify的Storefront API與React和Redux結合使用 (A detailed tutorial: how to use Shopify’s Storefront API with React and Redux) 電子商務為所有人&#xff01; (…網站&…

element里面popover里面的高度_五斗柜的高度一般是多少 五斗柜放在什么位置好

五斗柜也就是一種抽屜收納柜&#xff0c;目前在臥室或是書房等空間均是可以見到。其根據使用用途的不同&#xff0c;進而有著高度和款式&#xff0c;以及擺放位置等等的區別。因此&#xff0c;下面帶來五斗柜的高度一般是多少、五斗柜放在什么位置好&#xff0c;以及五斗柜里面…

leetcode 57. 插入區間

給出一個無重疊的 &#xff0c;按照區間起始端點排序的區間列表。 在列表中插入一個新的區間&#xff0c;你需要確保列表中的區間仍然有序且不重疊&#xff08;如果有必要的話&#xff0c;可以合并區間&#xff09;。 示例 1&#xff1a; 輸入&#xff1a;intervals [[1,3]…

《C++標準程序庫》學習筆記1--第二章第三章

————————— 第二章 —————————1.&#xff08;P11&#xff09; C規定&#xff1a;除了以typename修飾外&#xff0c;template內的任何標志符號都被視為一個值(value)而非一個型別。 eg. template <classT>classMyClass{ typename T::SubType *ptr; };…

讓物聯網真正起飛的關鍵:無線充電

從一般郊區家庭到工廠裝配生產線&#xff0c;我們生活中的每個角落都正在經歷“智能”技術強化的過程。物聯網&#xff08;IoT&#xff09;技術看似無所不在&#xff0c;但是為這些裝置持續供電仍是一大挑戰&#xff0c;除非這個問題能夠解決&#xff0c;否則許多令人興奮的物聯…

【NOIP2016】憤怒的小鳥

題目描述 Kiana最近沉迷于一款神奇的游戲無法自拔。 簡單來說&#xff0c;這款游戲是在一個平面上進行的。 有一架彈弓位于(0,0)處&#xff0c;每次Kiana可以用它向第一象限發射一只紅色的小鳥&#xff0c;小鳥們的飛行軌跡均為形如的曲線&#xff0c;其中a,b是Kiana指定的參數…

leetcode 127. 單詞接龍(bfs)

給定兩個單詞&#xff08;beginWord 和 endWord&#xff09;和一個字典&#xff0c;找到從 beginWord 到 endWord 的最短轉換序列的長度。轉換需遵循如下規則&#xff1a; 每次轉換只能改變一個字母。 轉換過程中的中間單詞必須是字典中的單詞。 說明: 如果不存在這樣的轉換序…

java swing 動態生成表格_6 個曾經牛逼哄哄的 Java 技術,你用過嗎?

大家好啊&#xff0c;今天給大家分享下我的開發歷程中&#xff0c;我知道的那些被淘汰的技術或者框架&#xff0c;有些我甚至都沒有用過&#xff0c;但我知道它曾經風光過。廢話不多說&#xff0c;下面我要開始吹了……1、Swing下面這個是用 swing 開發的&#xff1a;Swing 算是…

如果您是JavaScript開發人員,為什么要進行增強現實-以及如何開始

by Evaristo Caraballo通過Evaristo Caraballo 如果您是JavaScript開發人員&#xff0c;為什么要進行增強現實-以及如何開始 (Why you should do Augmented Reality if you are a JavaScript developer — and how to start) If you are a JavaScript coder who is still late…

[Java 安全]加密算法

Base64編碼 算法簡述 定義 Base64內容傳送編碼是一種以任意8位字節序列組合的描述形式&#xff0c;這種形式不易被人直接識別。 Base64是一種很常見的編碼規范&#xff0c;其作用是將二進制序列轉換為人類可讀的ASCII字符序列&#xff0c;常用在需用通過文本協議&#xff08;比…