socket套接字 通信基石 包含本地.遠(yuǎn)端ip地址,本地.遠(yuǎn)端通信協(xié)議,連接協(xié)議
支持tcp/ip網(wǎng)絡(luò)通信
多個(gè)通信進(jìn)程 通過一對套接字soket使 應(yīng)用層可以和傳輸層區(qū)分來自不同網(wǎng)絡(luò)連接的通信娇掏,實(shí)現(xiàn)數(shù)據(jù)傳輸并發(fā)
soket通過:服務(wù)器監(jiān)聽,客戶端請求婴梧,連接確認(rèn) 使其在同一個(gè)TCP協(xié)議端口傳輸數(shù)據(jù)又可被區(qū)分
服務(wù)基本是通過80 端口
網(wǎng)絡(luò)七層協(xié)議由下往上分別為物理層、數(shù)據(jù)鏈路層志秃、網(wǎng)絡(luò)層、傳輸層竟坛、會(huì)話層、表示層和應(yīng)用層
TCP/IP五層模型的協(xié)議分為:應(yīng)用層、傳輸層涎跨、網(wǎng)絡(luò)層、數(shù)據(jù)鏈路層和物理層隅很。
TCP:面向連接、傳輸可靠(保證數(shù)據(jù)正確性,保證數(shù)據(jù)順序)叔营、用于傳輸大量數(shù)據(jù)(流模式)所宰、速度慢绒尊,建立連接需要開銷較多(時(shí)間仔粥,系統(tǒng)資源)婴谱。
UDP:面向非連接、傳輸不可靠躯泰、用于傳輸少量數(shù)據(jù)(數(shù)據(jù)包模式)、速度快麦向。
TCP是一種流模式的協(xié)議,UDP是一種數(shù)據(jù)報(bào)模式的協(xié)議景描。
WEB使用Tcp作傳輸層協(xié)議,以封裝HTTP文本信息超棺,然后使用TCP/IP做傳輸層協(xié)議將它發(fā)送到網(wǎng)絡(luò)上。Socket是對TCP/IP協(xié)議的封裝棠绘,Socket本身并不是協(xié)議,而是一個(gè)調(diào)用接口(API)再扭,通過Socket氧苍,我們才能使用TCP/IP協(xié)議泛范。
建立起一個(gè)TCP連接需要經(jīng)過“三次握手”:
第一次握手:客戶端發(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),完成三次握手膀息。
三次握手(Three-way Handshake)即建立一個(gè)TCP連接時(shí),需要客戶端和服務(wù)器總共發(fā)送3個(gè)包潜支。三次握手的目的是連接服務(wù)器指定端口甸赃,建立TCP連接,并同步連接雙方的序列號(hào)和確認(rèn)號(hào)并交換TCP 窗口大小信息冗酿。在socket編程中,客戶端執(zhí)行connect()時(shí),將觸發(fā)三次握手裁替。
HTTP1.1規(guī)定了默認(rèn)保持長連接(HTTP persistent connection ,也有翻譯為持久連接)弱判,數(shù)據(jù)傳輸完成了保持TCP連接不斷開(不發(fā)RST包、不四次握手)昌腰,等待在同域名下繼續(xù)用這個(gè)通道傳輸數(shù)據(jù);相反的就是短連接遭商。