我正在學習http,並嘗試使用telnet 發送我自己的http 請求。
在命令提示字元中,我輸入:
telnet google.com 80
結果:螢幕被清除,我看到一個閃爍的遊標。 1. 為什麼我看不到任何已連接的指示?
現在,嘗試鍵入 http 命令(獲取 index.html...),我看到遊標在鍵入時向右移動,但我沒有看到螢幕上出現字母。只有空白。 2. 這是為什麼呢?
(使用windows7 64位元)
答案1
HTTP 不基於 telnet 協定。使用 telnet 作為「測試」HTTP 伺服器的基礎實際上存在一些問題。首先,telnet 在建立 TCP 連線後立即發送一些額外的位元組來設定會話參數。其次,HTTP 不會回顯遠端對等方發送的資料。第三,當傳送初始會話資料或遇到協定違規時,良好的 IPS 裝置可以中斷與 HTTP 連接埠的連線。
使用 telnet 用戶端測試 HTTP 伺服器充其量只是駭客行為。當 TCP 會話建立時,用戶端將顯示空白螢幕,並且僅顯示伺服器發送回的內容。如果你很聰明,你也許能夠在許多伺服器上檢索頁面......但我認為這是不好的做法。閱讀 HTTP 協定以了解如何格式化GET
請求。
一個基本的http請求是這樣完成的:
取得/HTTP/1.0
請注意請求後的額外行。完整的請求以空白換行符號結束。
答案2
為什麼我看不到任何已連接的跡象?
為什麼伺服器會發送額外不需要的資料並使用更多頻寬?但是您已連接並且可以對其進行測試。
嘗試輸入HTTP/1.0
並按 [enter]。你應該得到回應。
(其中包含錯誤,但通常足以測試網頁伺服器是否已啟動並運行。)
當我打字時,我看到遊標向右移動,但螢幕上看不到字母。只有空白。
這是由於 Windows telnet 造成的。預設情況下,它會停用本地回顯。