java web面試題【Tomact + HTTP + Socket】

關鍵字:

內容解說

l HTTP/1.1 200 OK:響應協議為HTTP1.1,狀態碼為200,表示請求成功,OK是對狀態碼的解釋;

l Server: Apache-Coyote/1.1:服務器的版本信息;

l Content-Type: text/html;charset=UTF-8:響應體使用的編碼為UTF-8;

l Content-Length: 724:響應體為724字節

l Set-Cookie: JSESSIONID=C97E2B4C55553EAB46079A4F263435A4; Path=/hello:響應給客戶端的Cookie;

l Date: Wed, 25 Sep 2012 04:15:03 GMT:響應的時間,這可能會有8小時的時區差;

1.2.4 說說你熟悉的響應碼

l 200:請求成功,瀏覽器會把響應體內容(通常是html)顯示在瀏覽器中;

l 404:請求的資源沒有找到,說明客戶端錯誤的請求了不存在的資源;

l 500:請求資源找到了,但服務器內部出現了錯誤;

l 302:重定向,當響應碼為302時,表示服務器要求瀏覽器重新再發一個請求,服務器會發送一個響應頭Location,它指定了新請求的URL地址;

l 304:當用戶第一次請求index.html時,服務器會添加一個名為Last-Modified響應頭,這個頭說明了index.html的最後修改時間,瀏覽器會把index.html內容,以及最後響應時間緩存下來。當用戶第二次請求index.html時,在請求中包含一個名為If-Modified-Since請求頭,它的值就是第一次請求時服務器通過Last-Modified響應頭髮送給瀏覽器的值,即index.html最後的修改時間,If-Modified-Since請求頭就是在告訴服務器,我這裡瀏覽器緩存的index.html最後修改時間是這個,您看看現在的index.html最後修改時間是不是這個,如果還是,那麼您就不用再響應這個index.html內容了,我會把緩存的內容直接顯示出來。而服務器端會獲取If-Modified-Since值,與index.html的當前最後修改時間比對,如果相同,服務器會發響應碼304,表示index.html與瀏覽器上次緩存的相同,無需再次發送,瀏覽器可以顯示自己的緩存頁面,如果比對不同,那麼說明index.html已經做了修改,服務器會響應200。

1.2.5

http的三次握手?socket有幾種狀態?socket底層編程?

1.2.5.1 http的三次握手

TCP(Transmission Control Protocol) 傳輸控制協議

TCP是主機對主機層的傳輸控制協議,提供可靠的連接服務,採用三次握手確認建立一個連接:

位碼即tcp標誌位,有6種標示:SYN(synchronous建立聯機) ACK(acknowledgement 確認) PSH(push傳送) FIN(finish結束) RST(reset重置) URG(urgent緊急)

Sequence number(順序號碼) Acknowledge number(確認號碼)

在TCP/IP協議中,TCP協議提供可靠的連接服務,採用三次握手建立一個連接。

第一次握手:建立連接時,客戶端發送syn包(syn=j)到服務器,並進入SYN_SEND狀態,等待服務器確認;

第二次握手:服務器收到syn包,必須確認客戶的SYN(ack=j+1),同時自己也發送一個SYN包(syn=k),即SYN+ACK包,此時服務器進入SYN_RECV狀態; 第三次握手:客戶端收到服務器的SYN+ACK包,向服務器發送確認包ACK(ack=k+1),此包發送完畢,客戶端和服務器進入ESTABLISHED狀態,完成三次握手。 完成三次握手,客戶端與服務器開始傳送數據.

1.2.5.2 socket有幾種狀態

CLOSED沒有使用這個套接字LISTEN套接字正在監聽入境連接SYN_SENT套接字正在試圖主動建立連接SYN_RECEIVED正在處於連接的初始同步狀態ESTABLISHED連接已建立CLOSE_WAIT遠程套接字已經關閉:正在等待關閉這個套接字FIN_WAIT_1套接字已關閉,正在關閉連接CLOSING套接字已關閉,遠程套接字正在關閉,暫時掛起關閉確認LAST_ACK遠程套接字已關閉,正在等待本地套接字的關閉確認FIN_WAIT_2套接字已關閉,正在等待遠程套接字關閉TIME_WAIT這個套接字已經關閉,正在等待遠程套接字的關閉傳送


分享到:


相關文章: