一招刨、TCP/IP協(xié)議
TCP/IP協(xié)議是一個協(xié)議簇霎俩。其中包括UDP、TCP、IP等協(xié)議打却。之所以命名為TCP/IP協(xié)議杉适,因為TCP,IP協(xié)議是兩個很重要的協(xié)議,就用他兩命名了柳击。
TCP/IP協(xié)議集包括應用層,傳輸層猿推,網(wǎng)絡層,網(wǎng)絡訪問層捌肴。
應用層包括:
超文本傳輸協(xié)議(HTTP):萬維網(wǎng)的基本協(xié)議.
文件傳輸(TFTP簡單文件傳輸協(xié)議): 遠程登錄(Telnet),提供遠程訪問其它主機功能,它允許用戶登錄internet主機,并在這臺主機上執(zhí)行命令.
網(wǎng)絡管理(SNMP簡單網(wǎng)絡管理協(xié)議),該協(xié)議提供了監(jiān)控網(wǎng)絡設備的方法,以及配置管理,統(tǒng)計信息收集,性能管理及安全管理等.
域名系統(tǒng)(DNS),該系統(tǒng)用于在internet中將域名及其公共廣播的網(wǎng)絡節(jié)點轉(zhuǎn)換成IP地址.
***網(wǎng)絡層包括: ***
Internet協(xié)議(IP)
Internet控制信息協(xié)議(ICMP)
地址解析協(xié)議(ARP)
反向地址解析協(xié)議(RARP)
網(wǎng)絡訪問層:
網(wǎng)絡訪問層又稱作主機到網(wǎng)絡層(host-to-network)蹬叭。
網(wǎng)絡訪問層的功能包括IP地址與物理地址硬件的映射,以及將IP封裝成幀。
基于不同硬件類型的網(wǎng)絡接口,網(wǎng)絡訪問層定義了和物理介質(zhì)的連接状知。
二秽五、TCP(Transmission Control Protocol,傳輸控制協(xié)議)
TCP是面向連接的協(xié)議:也就是說饥悴,在收發(fā)數(shù)據(jù)前筝蚕,必須和對方建立可靠的連接。
1铺坞、TCP建立連接的三次握手
第一次握手:建立連接時,客戶端發(fā)送syn包(syn=j)到服務器洲胖,并進入SYN_SENT狀態(tài)济榨,等待服務器確認;
SYN:同步序列編號(Synchronize Sequence Numbers)绿映。
第二次握手:服務器收到syn包擒滑,必須確認客戶的SYN(ack=j+1),同時自己也發(fā)送一個SYN包(syn=k)叉弦,即SYN+ACK包丐一,此時服務器進入SYN_RECV狀態(tài);
ACK: 確認字符(Acknowledgement)淹冰。
第三次握手:客戶端收到服務器的SYN+ACK包库车,向服務器發(fā)送確認包ACK(ack=k+1),此包發(fā)送完畢樱拴,客戶端和服務器進入ESTABLISHED(TCP連接成功)狀態(tài)柠衍,完成三次握手。
簡單理解:
第一次握手:主機A向主機B發(fā)出連接請求數(shù)據(jù)包:“我想給你發(fā)數(shù)據(jù)晶乔,可以嗎珍坊?”
第二次握手:主機B向主機A發(fā)送同意連接和要求同步的數(shù)據(jù)包:“可以,你什么時候發(fā)正罢?”
第三次握手:主機A再發(fā)出一個數(shù)據(jù)包確認主機B的要求同步:“我現(xiàn)在就發(fā)阵漏,你接著吧!”
2、TCP斷開連接的四次揮手
1 當主機A完成數(shù)據(jù)傳輸后,將控制位FIN置1,提出停止TCP連接的請求
2 主機B收到FIN后對其作出響應,確認這一方向上的TCP連接將關(guān)閉,將ACK置1
3 由B 端再提出反方向的關(guān)閉請求,將FIN置1
4 主機A對主機B的請求進行確認,將ACK置1,雙方向的關(guān)閉結(jié)束.
名詞解釋:
ACK TCP報頭的控制位之一,對數(shù)據(jù)進行確認.確認由目的端發(fā)出,用它來告訴發(fā)送端這個序列號之前的數(shù)據(jù)段都收到了.比如,確認號為X,則表示前X-1個數(shù)據(jù)段都收到了,只有當ACK=1時,確認號才有效,當ACK=0時,確認號無效,這時會要求重傳數(shù)據(jù),保證數(shù)據(jù)的完整性.
SYN 同步序列號,TCP建立連接時將這個位置1FIN 發(fā)送端完成發(fā)送任務位,當TCP完成數(shù)據(jù)傳輸需要斷開時,提出斷開連接的一方將這位置1
TCP的包頭結(jié)構(gòu):
源端口 16位
目標端口 16位
序列號 32位
回應序號 32位
TCP頭長度 4位
reserved 6位
控制代碼 6位
窗口大小 16位
偏移量 16位
校驗和 16位
選項 32位(可選)
這樣我們得出了TCP包頭的最小長度履怯,為20字節(jié)回还。
三、UDP(User Data Protocol虑乖,用戶數(shù)據(jù)報協(xié)議)
1懦趋、UDP是一個非連接的協(xié)議,傳輸數(shù)據(jù)之前源端和終端不建立連接疹味,當它想傳送時就簡單地去抓取來自應用程序的數(shù)據(jù)仅叫,并盡可能快地把它扔到網(wǎng)絡上。
在發(fā)送端糙捺,UDP傳送數(shù)據(jù)的速度僅僅是受應用程序生成數(shù)據(jù)的速度诫咱、計算機的能力和傳輸帶寬的限制;在接收端洪灯,UDP把每個消息段放在隊列中坎缭,應用程序每次從隊列中讀一個消息段。
2签钩、 由于傳輸數(shù)據(jù)不建立連接掏呼,因此也就不需要維護連接狀態(tài),包括收發(fā)狀態(tài)等铅檩,因此一臺服務機可同時向多個客戶機傳輸相同的消息憎夷。
3、 UDP信息包的標題很短昧旨,只有8個字節(jié)拾给,相對于TCP的20個字節(jié)信息包的額外開銷很小。
4兔沃、吞吐量不受擁擠控制算法的調(diào)節(jié)蒋得,只受應用軟件生成數(shù)據(jù)的速率、傳輸帶寬乒疏、源端和終端主機性能的限制额衙。
5、UDP使用盡最大努力交付缰雇,即不保證可靠交付入偷,因此主機不需要維持復雜的鏈接狀態(tài)表(這里面有許多參數(shù))。
6械哟、UDP是面向報文的疏之。發(fā)送方的UDP對應用程序交下來的報文,在添加首部后就向下交付給IP層暇咆。既不拆分锋爪,也不合并丙曙,而是保留這些報文的邊界,因此其骄,應用程序需要選擇合適的報文大小亏镰。我們經(jīng)常使用“ping”命令來測試兩臺主機之間TCP/IP通信是否正常,其實“ping”命令的原理就是向?qū)Ψ街鳈C發(fā)送UDP數(shù)據(jù)包拯爽,然后對方主機確認收到數(shù)據(jù)包索抓,如果數(shù)據(jù)包是否到達的消息及時反饋回來,那么網(wǎng)絡就是通的毯炮。
UDP的包頭結(jié)構(gòu):
源端口 16位
目的端口 16位
長度 16位
校驗和 16位
四逼肯、TCP協(xié)議與UDP協(xié)議的區(qū)別
1、基于連接與無連接:TCP是基于連接的協(xié)議桃煎,UDP是非連接的協(xié)議篮幢。
2、對系統(tǒng)資源的要求:TCP較多为迈,UDP少三椿;
3、UDP程序結(jié)構(gòu)較簡單葫辐;
4搜锰、流模式與數(shù)據(jù)報模式 ;
5耿战、TCP保證數(shù)據(jù)正確性纽乱,UDP可能丟包,TCP保證數(shù)據(jù)順序昆箕,UDP不保證。