HTTP的無狀態和轉發的的理解

 

    IP是無狀態的,它只負責將一個IP包發送到指定的IP地址上去。它不會考慮這個包與前面已經發送的包和後面的包的聯繫。(多是重發包、多是不連續包,它無論)。java

   TCP是有狀態的,它經過包頭中的一些控制字段(序列編碼等)來代表各個包之間的關係(先後關係,重包與否等等)。因此,經過這個協議你能夠作到一個可靠的傳輸。web

    那麼TCP是面向鏈接的協議是什麼意思呢?其實這裏的面向鏈接其實就是「三次握手」。三次握手,首先能夠保證對方的存在,其次握手的所交換的內容是爲未來進行有狀態的傳輸作準備。編碼

    UDP是無狀態的,它僅僅是在IP上加了Port,其餘的事情什麼也不幹。這樣它不可能作到可靠的傳輸,一樣也不須要鏈接。事務

    HTTP是無狀態的,它的底層協議是由狀態的TCP,可是HTTP的一次完整協議動做,裏面是使用有狀態的TCP協議來完成的。而每次協議動做之間沒有任何關係。例如:第7次請求HTTP協議包,並不知道,這個包是爲了什麼?它或許是由於上次沒有請求成功而重傳,或許是上次的後續請求,或許是其餘的,這些HTTP自身都不知道。用戶體驗

    www應用,可是不少時候,www應用是須要HTTP動做之間是有關聯的,那就是使應用有狀態。這樣才能提供給用戶最好的用戶體驗。請求

   http的無狀態和轉發是否是衝突了?
         http的無狀態是指:協議對於事務處理沒有記憶能力。而轉發是java程序作的事兒,是從一個web組件轉到另外一個web組件,是javaEE內部,組件與組件的聯         通。也就是說,你發送一次HTTP請求的話,因爲無狀態性,發送成功就關閉請求了,可是,只要java接收到了這個請求,我能夠再次傳遞給其餘組件,由於此時球在java手中,我能夠隨便傳球。
相關文章
相關標籤/搜索