請使用HTTP/1.1的GET方法 取得IP=163.17.3.158 port=8080的hw1.htm的內容
請問各位大大 該怎麼用HTTP 協定...
可否有步驟呢
我有爬過文了
但還是不懂
可以說明一下嗎
謝意嚕
__________________________________________________________________
XO
可以先說說你所理解的 HTTP 協定是啥?
HTTP 協定裡,Request 封包長得像啥樣?
HTTP 協定裡,Server Response 的封包又長得像啥?
這一篇挺淺顯入門的... 可以瞧瞧去: http://www.cqinc.com.tw/coopermaa/932-DC/practice/WWWIntro.htm
需要會開 Network socket ... 這個版有些討論,不過很多用的例子都是採 Tcl 腳本語言 就是:
這個也許會有幫助:來為咱們 Socket Programming 實習暖暖身
開個 Client socket 連到你給的 IP:port (163.17.3.158:8080) ...
組個 HTTP Request 封包,其實不過就是下面兩行就搞定... (第二行是個空白行,這一行可一點兒都不能省)
把上述 Request 封包透過剛開起來的 socket 往另一頭 Server 端送...
然後等著從同一個 socket 收 Server 端回覆的 Response 封包ㄇㄟ
就醬子簡單!
Google 大神請教一下還抓到這鍋:
呵呵!看起來像是作業的樣子! New comer, 是本校的嗎? ^o^ 加油!不難啦!
______________________________________________
eXtra Old 的是我「不是酒」哦!
__________________________________________________________________
shionytw
請問老師
空白行是指那個鍵呢
是空白鍵嗎
恩恩嗯我還是學生嚕 不過是別的地方的學生嚕
在網路上看到老師的教學 所以來這學習嚕
__________________________________________________________________
b80203
看來老師愈來愈紅了!!!!哈哈!!
空白行是指那一行什麼都不打,單純按一個enter鍵的意思,當browser碰見了這一行所謂的"空白行"後!!
以下的內容就會將它視為html的語法囉,也就是你按右鍵->原始檔,所看見的東東!!
__________________________________________________________________
shionytw
老師請教一下喔
我是按照之前爬文的做法
先輸入telnet 163.17.3.158 port:8080 然後變成整個黑畫面
這時候 輸入 GET /hw1.htm HTTP/1.1 之後就很快跳出去了
也都看不到什麼訊息存在
請教老師我是那裡做錯了呢
__________________________________________________________________
XO
shionytw 寫到:老師請教一下喔
我是按照之前爬文的做法
先輸入telnet 163.17.3.158 port:8080 然後變成整個黑畫面
這時候 輸入 GET /hw1.htm HTTP/1.1 之後就很快跳出去了
也都看不到什麼訊息存在
請教老師我是那裡做錯了呢
(應該要輸入 telnet 163.17.3.158 8080 的才對,沒有那個 port: 啦)
剛進入 Telnet 連線時,畫面變黑 應該是微軟 Telnet 的臭蟲吧... (這我沒研究)
這不礙事兒的啦! 還是可以摸黑進行 ...
其實他老兄也只有一開始給你「熄燈」下下馬威,咱們不都是從小給 Microsoft 藍色畫面 嚇大的ㄇㄟ...別怕! ^o^
繼續續往下試 ... 就會「撥雲見日」的啦!
還有啊... 你說「... 之後就很快跳出去了,也都看不到什麼訊息存在...」
我在猜你應該是在 開始 --> 執行 出現那個小視窗裡,直接打 telnet 163.17.3.158 8080 的吧!?
那是會「動態」開個 「命令提示字元視窗」,開個 socket 連到 Server 做個 GET 動作,對方回覆後,大多數時候會來個 Connection close 把連線中斷,這時候這個「動態」「命令提示字元視窗」任務達成,就關窗就寢 走人了ㄇㄟ...
試試執行 cmd 手動開個「命令提示字元視窗」視窗,再鍵入 telnet 163.17.3.158 8080 試試看吧!
嫌人家微軟 Telnet 一開始不夠「正大光明」的話,用 「超級終端機 (Hyperterm)」碼喜耶塞的啦!
加油!ㄟ!還是可以跟老師報告,說咱們這兒 XO 沒釣魚給吃,而是教怎麼釣魚的啦!
常來唷~~~ 呼朋引伴也無妨、人多好切磋唄!
來!再送個好禮... 附上一個 HTTPD 封包監視器 Sockspy.exe,讓你把玩... 怎麼玩?爬文唄... 這站好些地方我都提過這個 Sockspy ... 只不過過去我沒把這 Tcl 腳本 Sockspy.kit 做成單一執行檔啦... 記得別放在「桌面」上執行,這小夥子必須擺在沒有含中文的路徑底下,才跑得起來的啦!
______________________________________________
eXtra Old 的是我「不是酒」哦!
__________________________________________________________________
XO 在 星期二 十月 28, 2008 6:53 pm 作了第 3 次修改shionytw
老師你好
我輸入進去之後telnet 163.17.3.158 8080
輸入GET /hw1.htm HTTP/1.1
之後
就出現以下畫面
跟老師所教的有所不同
是我做錯那裡了嗎
我也telnet裡面
但最後確會與遺失與主機的連線
以下畫面
謝謝老師嚕
HTTP/1.1 400 Bad Request
Server: Apache-Coyote/1.1
Transfer-Encoding: chunked
Date: Fri, 14 Mar 2008 13:59:15 GMT
Connection: close
0
。
C:\Documents and Settings\aggie-shih>[/quote]
__________________________________________________________________
b80203
shionytw 寫到:老師你好
我輸入進去之後telnet 163.17.3.158 8080
輸入GET /hw1.htm HTTP/1.1
之後
就出現以下畫面
跟老師所教的有所不同
是我做錯那裡了嗎
我也telnet裡面
但最後確會與遺失與主機的連線
以下畫面
謝謝老師嚕
HTTP/1.1 400 Bad Request
Server: Apache-Coyote/1.1
Transfer-Encoding: chunked
Date: Fri, 14 Mar 2008 13:59:15 GMT
Connection: close.....
會不會是你的大小寫沒有分??
GET /hw1.htm HTTP/1.1
GET 和 HTTP要大寫
GET 和 /hw1.htm 和HTTP/1.1
之間,必須要空白
打好後連按二次enter!!
不過老實說,從我的cmd連到我的vm的結果(我是連port 80)
也是無法收到正確資訊
不過只要改成
GET /hw1.htm HTTP 1.1
這樣子就可以連上了!!
給你作參考!!^^
__________________________________________________________________
shionytw
好奇怪喔
我按照老師的做法
還是一樣
請老師幫我看一下
以下是我的做法
第一步驟在命令提式字元裡輸入 telnet 163.17.3.158 8080
然後進入到裡面裡
輸入GET /hw1.htm HTTP/1.1
之間都有空格
不過還是一樣嚕
HTTP/1.1 400 Bad Request
Server: Apache-Coyote/1.1
Transfer-Encoding: chunked
Date: Fri, 14 Mar 2008 14:55:17 GMT
Connection: close
0
遺失與主機的連線。
C:\Documents and Settings\aggie-shih>
__________________________________________________________________
XO
______________________________________________
eXtra Old 的是我「不是酒」哦!
__________________________________________________________________
XO
有意思! b80203 厲害唷!我在 Apache 上試確實是如此耶!
我還正在納悶不知道會不會是 HTTP 協定 1.1 版本新的語法ㄌㄟ...
可是試過 TclHttpd Web Server,
都可以... 但是 GET / HTTP 1.1 不行耶!
______________________________________________
eXtra Old 的是我「不是酒」哦!
__________________________________________________________________
XO
有意思! 我找到問題的原因啦!
果然是 HTTP 協定版本的問題 ...
HTTP 1.1 版本規定 Request Header 一定要有 Host 這個 Header 項目,用來指定欲瀏覽伺服器的主機。
換言之 Request 封包,除了上述兩行(一行 Request Line,另一行空白行以外,還要外加一行 Host: xxx.xxx.xxx.xxx)...
如果用的是 HTTP 1.0 版本,就不必提供 Host 這個 Header 項目。
這樣子就可以囉!
至於為甚麼 b80203 試出來 GET / HTTP 1.1 在 Apache 底下也可以,這我就不知道啦!這種寫法在其他幾個 Web Server 測試是不被允許的。
______________________________________________
eXtra Old 的是我「不是酒」哦!
__________________________________________________________________
shionytw
感謝老師的教授
果然是HTTP/1.1 及HTTP/1.0之間的差別
此HTTP標題分別包含了以下之重要資訊:
GET:代表用戶端向Web Server所下達的HTTP方法,可分為:
CONNECT
DELETE
GET
HEAD
OPTIONS
POST
PUT
TRACE
/index.html:代表用戶端欲瀏覽之資源,並以URI或URL形式表示。
HTTP/1.1:代表使用HTTP通訊協定的版本,依版本的不同可分為:
HTTP/0.9:僅提供GET方法,稱為Simple Request(簡單請求),目前已較少使用。
HTTP/1.0:稱為Full Request(完整請求),提供以下之方法:
GET
HEAD
POST
透過以上三類的HTTP標題資訊,Web Server便能了解用戶端的
HTTP請求為何,並進一步處理並回傳相對應之資源。因此Web Server
至少必須能處理HTTP標題的第一行資訊,以便處理用戶端所下達的
HTTP方法及資源。
果然三種方法都要測試看看嚕
當用戶端透過瀏覽器下達HTTP請求至Web Server時,HTTP通訊協定會將此請
求轉換為以下之HTTP標題資訊傳送至Web Server處理
謝謝老師的教導嚕
感謝老師
__________________________________________________________________
b80203
XO 寫到:有意思! 我找到問題的原因啦!
果然是 HTTP 協定版本的問題 ...
HTTP 1.1 版本規定 Request Header 一定要有 Host 這個 Header 項目,用來指定欲瀏覽伺服器的主機。
換言之 Request 封包,除了上述兩行(一行 Request Line,另一行空白行以外,還要外加一行 Host: xxx.xxx.xxx.xxx)...
Code [syntax off]:
GET /hw1.htm HTTP/1.1
Host: 163.17.3.158
(空白行)
如果用的是 HTTP 1.0 版本,就不必提供 Host 這個 Header 項目。
這樣子就可以囉!
至於為甚麼 b80203 試出來 GET / HTTP 1.1 在 Apache 底下也可以,這我就不知道啦!這種寫法在其他幾個 Web Server 測試是不被允許的。
不只如此@@
連直接打GET他也會丟出一樣的資料
只是不會丟出header那部份了@@
老師可以請問一下您嗎,在linux底下,空白鍵要怎麼取代啊!!
記得前幾週您有分享過,但是我找了好久,不知道是在哪個分類區裡!!
現在正在灌jacl,在win平台下,但是是使用msys這個程式來安裝的!!
很酷!!可以模擬linux的shell !!
但是在指定路徑的時候,我的path是在C:\Program Files\Java\jdk1.6.0_05
無法克服program和files中間的空白鍵(網路上真難找@@|||)!!
請老師指點!!
#-----------------------------------------------------------
10:34 pm
剛在b2d vm上裝好了jacl,但是沒有想像中的好用也!!
感覺tcl還是比較直覺,難道就像網路上說的script language加上物件導向就失去意義了嗎??唉呀!!
晚一點再來試試tclblend,好像這個是拆衷的選擇!!
不知道equi4網站上的那個tcl主程式,是不是activetcl的那個整套tcl程式的簡化版!!@@
還是說根本就是不同公司開發出來的產品??
__________________________________________________________________
XO
b80203 寫到:老師可以請問一下您嗎,在linux底下,空白鍵要怎麼取代啊!!
記得前幾週您有分享過,但是我找了好久,不知道是在哪個分類區裡!!
現在正在灌jacl,在win平台下,但是是使用msys這個程式來安裝的!!
很酷!!可以模擬linux的shell !!
但是在指定路徑的時候,我的path是在C:\Program Files\Java\jdk1.6.0_05
無法克服program和files中間的空白鍵(網路上真難找@@|||)!!
請老師指點!!
不知道有沒誤會你的意思,你是指在設定環境變數時,碰到路徑有空白時怎麼辦嗎?
如果是問這個 ... 答案就是用單/雙引號刮起來呀!
______________________________________________
eXtra Old 的是我「不是酒」哦!
__________________________________________________________________
b80203
b80203 寫到:老師可以請問一下您嗎,在linux底下,空白鍵要怎麼取代啊!!
記得前幾週您有分享過,但是我找了好久,不知道是在哪個分類區裡!!
現在正在灌jacl,在win平台下,但是是使用msys這個程式來安裝的!!
很酷!!可以模擬linux的shell !!
但是在指定路徑的時候,我的path是在C:\Program Files\Java\jdk1.6.0_05
無法克服program和files中間的空白鍵(網路上真難找@@|||)!!
請老師指點!!
不知道有沒誤會你的意思,你是指在設定環境變數時,碰到路徑有空白時怎麼辦嗎?
如果是問這個 ... 答案就是用單/雙引號刮起來呀!
呵呵!!!對對,我就是說這個,已經試了,可以在linux裡執行!!
不過現在是在用minGW在灌jacl,看來在minGW裡!!
它似乎對" "or' '不領情,愈來愈愛linux了,真是好東西也!!
__________________________________________________________________
XO
試試 Cygwin 吧!
還有哇!我也在我機器上裝了個
這是有人把 UNIX 世界好用指令給 Port 到 Windows 平台上啦!
換言之... 我在我的 XP Windows「命令提示字元」視窗哩,照樣下 UNIX/Linux 指令。
______________________________________________
eXtra Old 的是我「不是酒」哦!
Powered by phpBB ? 2001, 2002 phpBB Group
引文来源
E-Office學園 :: 觀看文章 - 請使用HTTP/1.1的GET方法
评论