說(shuō)明:很多時(shí)候?qū)τ诓唤?jīng)常用的東西斩启,或許看過的東西都會(huì)隨著時(shí)間慢慢的就忘記了,所以做個(gè)隨筆還是很有必要的醉锅,老師常說(shuō):好記性不如爛筆頭兔簇。
TCP/IP、Http硬耍、Socket:在網(wǎng)上投簡(jiǎn)歷找IT方面工作大多會(huì)看到公司要求會(huì)寫上什么熟悉Http/TCP/IP/Socket等的垄琐,所以在當(dāng)面試官問到的時(shí)候總要說(shuō)出自己的理解對(duì)吧。所以就簡(jiǎn)單總結(jié)下加深印象经柴。
一狸窘、什么是TCP連接的三次握手
第一次握手:客戶端發(fā)送syn包(syn=j)到服務(wù)器,并進(jìn)入SYN_SEND狀態(tài)坯认,等待服務(wù)器確認(rèn);
第二次握手:服務(wù)器收到syn包翻擒,必須確認(rèn)客戶的SYN(ack=j+1)氓涣,同時(shí)自己也發(fā)送一個(gè)SYN包(syn=k),即SYN+ACK包陋气,此時(shí)服務(wù)器進(jìn)入SYN_RECV狀態(tài);
第三次握手:客戶端收到服務(wù)器的SYN+ACK包劳吠,向服務(wù)器發(fā)送確認(rèn)包ACK(ack=k+1),此包發(fā)送完畢巩趁,客戶端和服務(wù)器進(jìn)入ESTABLISHED狀態(tài)痒玩,完成三次握手。
握手過程中傳送的包里不包含數(shù)據(jù)议慰,三次握手完畢后蠢古,客戶端與服務(wù)器才正式開始傳送數(shù)據(jù)。
理想狀態(tài)下别凹,TCP連接一旦建立草讶,在通信雙方中的任何一方主動(dòng)關(guān)閉連接之前,TCP 連接都將被一直保持下去番川。
總結(jié):先客戶端發(fā)送syn=j的包到涂,接著服務(wù)器收到之后做確認(rèn)ACK(ack=j+1)然后自己發(fā)一個(gè)syn=k的包SYN。兩個(gè)放一起ACK+SYN發(fā)回客戶端颁督,客戶端收到之后再對(duì)服務(wù)器發(fā)送ACK(k+1)發(fā)包就完了,雙方進(jìn)入ESTABLISHED狀態(tài)浇雹。
二沉御、HTTP鏈接的特點(diǎn)
HTTP協(xié)議即超文本傳送協(xié)議(Hypertext Transfer Protocol ),是Web聯(lián)網(wǎng)的基礎(chǔ)昭灵,也是手機(jī)聯(lián)網(wǎng)常用的協(xié)議之一吠裆,HTTP協(xié)議是建立在TCP協(xié)議之上的一種應(yīng)用。
HTTP連接最顯著的特點(diǎn)是客戶端發(fā)送的每次請(qǐng)求都需要服務(wù)器回送響應(yīng)烂完,在請(qǐng)求結(jié)束后试疙,會(huì)主動(dòng)釋放連接。從建立連接到關(guān)閉連接的過程稱為“一次連接”抠蚣。
總結(jié):這是最常見的祝旷,尤其是現(xiàn)在只能手機(jī)的發(fā)展,只要是稍微做過登錄這方面的都會(huì)理解嘶窄。
三怀跛、TCP和UDP的區(qū)別
一個(gè)是面向連接一個(gè)是不面向連接。TCP要連接就需要雙方達(dá)成一致才能進(jìn)行數(shù)據(jù)傳輸柄冲,所以這過程中可能會(huì)有失敗呀吻谋,效率上什么的不理想。但是UDP不需要連接萬(wàn)一丟了怎么辦现横?對(duì)方也沒有失敗或者確認(rèn)的信號(hào)漓拾,所以這不可靠阁最。
四、Socket
講了上面的Http/TCP/IP/UDP骇两,那么Socket是什么鬼速种?感覺很抽象,是的脯颜!就是對(duì)TCP/IP協(xié)議的抽象哟旗。它可不是什么協(xié)議,但是我們?yōu)樯队盟鼇?lái)編程栋操?特別是通訊這方面闸餐?其實(shí)Socket的出現(xiàn)只是使得程序員更方便地使用TCP/IP協(xié)議棧而已,因?yàn)門CP/IP用在實(shí)際開發(fā)中很困難矾芙,所以要封裝一個(gè)各個(gè)平臺(tái)都可以方面間接的操作他們的接口(API)舍沙,那么他就是Socket。
這里只是基礎(chǔ)簡(jiǎn)單的得以了解這幾個(gè)東西剔宪,希望對(duì)你有幫助拂铡,以后還會(huì)補(bǔ)充。