淺析url+HTTP

1. url的組成

先舉個具體的url的例子:


https://www.baidu.com/s?wd=hello&rsv_spt=1#5

url的組成包括以下幾點:

  • 協議 https://

  • 域名或IP加上端口 www.baidu.com:433 端口為433這里省略了

  • 路徑 /s

  • 查詢字符串 ?wd=hello&rsv_spt=1

  • 錨點 #5

2. HTTP基本概念

HTTP 全稱為 HyperText Transfer Protocol

2.1 請求

請求行:

請求動詞[(get/post/put/patch/delete) 其中get用來獲取內容赘淮,post用來上傳內容俘枫。] + 路徑和查詢參數(所有路徑必須以/開頭) + 協議名/版本

請求頭:

  • Host:域名或ip+端口號

  • Accept:表示要接受什么讼载,大部分為text/html

  • Content-Type:請求體格式

回車(必須寫!T愀邸!)

請求體:

也就是上傳內容。請求體在get請求中一般為空编兄。

2.2 響應

狀態(tài)行:

協議名/版本 + 狀態(tài)碼(常見的狀態(tài)碼有:200表示ok,404表示加載失敗) + 狀態(tài)字符串

響應頭:

Content-type:響應體的格式

回車 (必須寫I恰:菰А!)

響應體:

也就是下載內容悯嗓。

2.3 用curl構造請求

先來一個最簡單的請求:


curl -v http://127.0.0.1:8888

  • 設置請求動詞 如把請求動詞改為POST件舵,只需要加上 -X -POST,具體為:

curl -v -X -POST http://127.0.0.1:8888

  • 設置路徑和查詢參數 直接在curl后面加 具體為:

curl -v -X -POST http://127.0.0.1:8888/xx?wd=hi

  • 設置請求頭 -H 'Name:value' 或者 -header 'Name:value' 具體為:

curl -v -X -POST -H 'Accept:text/html' -H 'Content-Type:text/plain;charset=utf-8' http://127.0.0.1:8888/xx?wd=hi

  • 設置請求體 -D '內容' 或者 -data '內容' 具體為:

curl -v -D '請求內容' http://127.0.0.1:8888

2.4 用node.js讀取請求

  • 讀取請求動詞:

request.method

  • 讀取路徑:
  1. 路徑帶查詢參數:request.url

  2. 純路徑:path

  3. 只有查詢參數:query

  • 讀取請求頭:

request.headers['Accept']

2.5 用node.js設置響應

  • 設置狀態(tài)行的狀態(tài)碼:

response.statusCode=200

  • 設置響應頭:

response.setHeader('Content-Type','text/html;charset:utf-8')

  • 設置響應體:注意點是包住內容的符號不是引號脯厨,是反引號铅祸。

response.write(`內容`)

2.6 舉例

附上一個server.js 可以更好的理解以上知識:

我的一個github上的server.js

3. 域名、IP合武、和端口

3.1 IP

IP 全稱為Internet Protocol 它主要約定了兩件事情:

  1. 如何ing為一臺設備

  2. 如何封裝數據報文临梗,與其他設備交流

只要在互聯網中,你就至少有一個IP稼跳。IP又分為內網和外網盟庞,由路由器溝通內外網。

如何獲得外網IP:

  1. 從電信租用寬帶

  2. 買個路由器汤善,然后用電腦或手機連接路由器廣播出來的無線wifi

  3. 只要路由器連接上電信的服務器什猖,那么路由器就會有一個外網IP票彪,這就是你在互聯網中的地址,如 14.17.32.211

  4. 但是如果重啟路由器不狮,那么你很可能被重新分配到一個外網IP降铸,也就是說你爹路由器沒有固定的外網IP

  5. 如果你的路由器的外網IP是 14.17.32.222 那么你的手機和電腦的IP又是什么呢?答案是內網IP摇零。

  6. 查看外網IP可以登錄 http://ip138.com 查看

如何獲得內網IP:

  1. 路由器會在你家創(chuàng)建一個內網推掸,內網中的設備用內網IP,一般來說這個格式是 192.168.xxx.xxx

  2. 一般路由器會給自己分配一個好記的內網IP驻仅,如:192.168.1.1

  3. 然后路由器會給每一個內網中的設備分配一個不用的內網IP终佛,如你的電腦是192.168.1.2 你的手機是 192.168.1.3

路由器的功能:

  • 路由器有兩個IP,一個內網IP雾家,一個外網IP

  • 內網中的設備可以和互相訪問铃彰,但不能直接反訪外網

  • 內網設備想要訪問外網,就必須通過路由器中轉

  • 外網中的設備可以互相訪問芯咧,但是不能訪問你的內網

  • 外網中的設備想要把內容送到內網牙捉,也必須通過路由器

  • 也就是說內網和外網就像兩個隔絕的空間,無法互通敬飒,路由器就是唯一的聯通點

  • 所以路由器有時候也叫網關

幾個特殊的IP

  • 127.0.0.1 表示自己

  • localhost同過host制定自己 host文件的路徑為 C:\Windows\System32\drivers\etc 可以通過在里面加入一行127.0.0.1 xxx 邪铲,讓xxx稱為127.0.0.1 的別稱

  • 0.0.0.0 不表示任何設備

3.2 端口 port

一臺機器可以提供不同的服務,其中:

  • 要提供HTTP服務最好用80端口

  • 要提供HTTPS服務最好用443端口

  • 要提供FTP服務用21端口

  • 一共有65535個端口(基本夠用)

端口的使用規(guī)則:

  • 0到1023端口是留給系統使用的无拗,你有了管理員權限后带到,才有資格使用這些端口

  • 其他端口可以給普通用戶使用,如http-server默認使用8080端口

  • 一個端口被占用英染,你就只能換一個

3.3 域名

  • 域名就是對IP的別稱揽惹。

  • 一個域名可以對應多個IP,這個叫做均衡負載四康,防止一臺機器扛不住

  • 一個IP可以有多個域名搪搏,這個叫做共享主機,窮開發(fā)者才會這么做

ping 命令的使用:

簡單來說闪金,「ping」是用來探測本機與網絡中另一主機之間是否可達的命令疯溺,如果兩臺主機之間ping不通,則表明這兩臺主機不能建立起連接哎垦。ping是定位網絡通不通的一個重要手段囱嫩。

就是我們玩游戲會有個ping,表示延遲漏设,如果ping值越低墨闲,說明你和服務器的連接越好。

DNS: 連接域名和IP

  • 但你輸入一個域名后愿题,你的chrome瀏覽器會向電信或者聯通的DNS服務器詢問改域名對應了什么IP

  • 電信或聯通會回答一個IP损俭,具體過程很復雜,不研究

  • 然后才會向對應IP的443或者80端口發(fā)送請求

  • 請求內容是查看xxx(你輸入的域名)的首頁

nslookup: 你可以通過在命令行輸入:


nslookup baidu.com

來查看百度的IP潘酗。

域名的分級:

  • com/cn/org/io等都是頂級域名杆兵。com的全稱是company,org是指非營利性組織仔夺。

  • github.io是二級域名(俗稱一級域名)

  • username.github.io是三級域名(俗稱二級域名)

  • 只是github.io把它的子域名們免費提供給用戶使用

  • 二級域名與三級域名之間是父子關系绒尊,所以說 www.xiedamala.comxiedaimala.com 可以是一家公司榨咐,也可以不是。

4.路徑

通過路徑,可以做到訪問相同域名威酒,但是請求不同頁面,如:

https://developer.mozilla.org/zh-Cn/docs/Web/HTML

https://developer.mozilla.org/zh-Cn/docs/Web/CSS

5. 查詢參數

通過查詢參數蝴蜓,可以做到請同一個頁面鞭缭,訪問不同內容,如:

http://www.baidu.com/s?wd=hi

http://www.baidu.com/s?wd=hello

6. 錨點

通過錨點可以做到抛猖,訪問相同內容格侯,出現在不同位置,如:

https://developer.mozilla.org/zh-Cn/docs/Web/CSS#參考書

https://developer.mozilla.org/zh-Cn/docs/Web/CSS#教程

注意:

  • 錨點看起來有中文财著,實際不支持中文

  • 錨點無法在Network版面看到联四,因為錨點不會傳給服務器,他只跟瀏覽器有關撑教。

最后編輯于
?著作權歸作者所有,轉載或內容合作請聯系作者
  • 序言:七十年代末朝墩,一起剝皮案震驚了整個濱河市,隨后出現的幾起案子伟姐,更是在濱河造成了極大的恐慌收苏,老刑警劉巖,帶你破解...
    沈念sama閱讀 221,695評論 6 515
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件愤兵,死亡現場離奇詭異倒戏,居然都是意外死亡,警方通過查閱死者的電腦和手機恐似,發(fā)現死者居然都...
    沈念sama閱讀 94,569評論 3 399
  • 文/潘曉璐 我一進店門杜跷,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人矫夷,你說我怎么就攤上這事葛闷。” “怎么了双藕?”我有些...
    開封第一講書人閱讀 168,130評論 0 360
  • 文/不壞的土叔 我叫張陵淑趾,是天一觀的道長。 經常有香客問我忧陪,道長扣泊,這世上最難降的妖魔是什么近范? 我笑而不...
    開封第一講書人閱讀 59,648評論 1 297
  • 正文 為了忘掉前任,我火速辦了婚禮延蟹,結果婚禮上评矩,老公的妹妹穿的比我還像新娘。我一直安慰自己阱飘,他們只是感情好斥杜,可當我...
    茶點故事閱讀 68,655評論 6 397
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著沥匈,像睡著了一般蔗喂。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上高帖,一...
    開封第一講書人閱讀 52,268評論 1 309
  • 那天缰儿,我揣著相機與錄音,去河邊找鬼散址。 笑死返弹,一個胖子當著我的面吹牛,可吹牛的內容都是我干的爪飘。 我是一名探鬼主播义起,決...
    沈念sama閱讀 40,835評論 3 421
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼师崎!你這毒婦竟也來了默终?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 39,740評論 0 276
  • 序言:老撾萬榮一對情侶失蹤犁罩,失蹤者是張志新(化名)和其女友劉穎齐蔽,沒想到半個月后,有當地人在樹林里發(fā)現了一具尸體床估,經...
    沈念sama閱讀 46,286評論 1 318
  • 正文 獨居荒郊野嶺守林人離奇死亡含滴,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內容為張勛視角 年9月15日...
    茶點故事閱讀 38,375評論 3 340
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現自己被綠了丐巫。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片谈况。...
    茶點故事閱讀 40,505評論 1 352
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖递胧,靈堂內的尸體忽然破棺而出碑韵,到底是詐尸還是另有隱情,我是刑警寧澤缎脾,帶...
    沈念sama閱讀 36,185評論 5 350
  • 正文 年R本政府宣布祝闻,位于F島的核電站,受9級特大地震影響遗菠,放射性物質發(fā)生泄漏联喘。R本人自食惡果不足惜华蜒,卻給世界環(huán)境...
    茶點故事閱讀 41,873評論 3 333
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望豁遭。 院中可真熱鬧叭喜,春花似錦、人聲如沸堤框。這莊子的主人今日做“春日...
    開封第一講書人閱讀 32,357評論 0 24
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蜈抓。三九已至,卻和暖如春昂儒,著一層夾襖步出監(jiān)牢的瞬間沟使,已是汗流浹背。 一陣腳步聲響...
    開封第一講書人閱讀 33,466評論 1 272
  • 我被黑心中介騙來泰國打工渊跋, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留腊嗡,地道東北人。 一個月前我還...
    沈念sama閱讀 48,921評論 3 376
  • 正文 我出身青樓拾酝,卻偏偏與公主長得像燕少,于是被迫代替她去往敵國和親。 傳聞我的和親對象是個殘疾皇子蒿囤,可洞房花燭夜當晚...
    茶點故事閱讀 45,515評論 2 359

推薦閱讀更多精彩內容

  • 如何做到表揚孩子有感而發(fā) 第一就是要找到感覺順位材诽,可以通過切換不同的角度底挫,不同的時空,不同的突破口入手脸侥,先讓自己的...
    自然梅語趙梅閱讀 978評論 0 4
  • 第一次洗手做羹湯建邓,雖然都屬于熱一下就好了的,但是也是我用心做了呢~( ̄() ̄) 王薇清野蠻生長睁枕!
    王薇清閱讀 152評論 0 0
  • “不過官边,這樣我又回到了原點,”小米長吸一口氣外遇,“如果限制閱讀的時間的話拒逮,那么剩余時間做什么呢?我目前腦袋里面又一片...
    一葉愛成長愛游戲閱讀 213評論 0 3