IP是無狀態的,它只負責將一個IP包發送到指定的IP地址上去。它不會考慮這個包與前面已經發送的包和後面的包的聯繫。(多是重發包、多是不連續包,它無論)。java
TCP是有狀態的,它經過包頭中的一些控制字段(序列編碼等)來代表各個包之間的關係(先後關係,重包與否等等)。因此,經過這個協議你能夠作到一個可靠的傳輸。web
那麼TCP是面向鏈接的協議是什麼意思呢?其實這裏的面向鏈接其實就是「三次握手」。三次握手,首先能夠保證對方的存在,其次握手的所交換的內容是爲未來進行有狀態的傳輸作準備。編碼
UDP是無狀態的,它僅僅是在IP上加了Port,其餘的事情什麼也不幹。這樣它不可能作到可靠的傳輸,一樣也不須要鏈接。事務
HTTP是無狀態的,它的底層協議是由狀態的TCP,可是HTTP的一次完整協議動做,裏面是使用有狀態的TCP協議來完成的。而每次協議動做之間沒有任何關係。例如:第7次請求HTTP協議包,並不知道,這個包是爲了什麼?它或許是由於上次沒有請求成功而重傳,或許是上次的後續請求,或許是其餘的,這些HTTP自身都不知道。用戶體驗
www應用,可是不少時候,www應用是須要HTTP動做之間是有關聯的,那就是使應用有狀態。這樣才能提供給用戶最好的用戶體驗。請求