# TCP/ IP的简单了解
-
TCP/IP協議是一個協議群!其中包含好幾個協議,UDP只是其中的一個。至於說為什麼使用TCP/IP命名是因為這兩個協議比較重要。
-
简单来说就是IP只是一个地址协议,如果需要保证资料完整性就需要TCP
-
TCP/IP協議集包含應用層,傳輸層,網絡層,網絡訪問層
- 應用層包括:
- 超文本傳輸協議HTTP:www的基本協議
- 文本傳輸:TFTP簡單文本傳輸協議
- 遠程登錄:Telnet,提供遠程訪問其他主機功能,它允許用戶登錄internet主機,並且在這台主機上執行命令。
- 網絡管理(SNMP簡單網絡管理協議),該協議提供了監控網絡設備的方法,以及配置管理,系統信息收集,性能管理及安全管理等。
- 域名系統(DNS),該系統用在internet中將域名及其公共廣播的網絡接點轉換為IP地址。
- 其次網絡層
- Internet協議(IP)
- Internet控制信息協議(ICMP)
- 地址解析協議(ARP)
- 方向地址解析協議(RARP)
- 網絡訪問層
- 網絡訪問層又稱作主機到網絡層(host-to-network),網絡訪問層的功能包括IP地址與物理地址的硬件映射。定義了物理介質的連接。
- 網絡訪問層又稱作主機到網絡層(host-to-network),網絡訪問層的功能包括IP地址與物理地址的硬件映射。定義了物理介質的連接。
- 應用層包括:
-
TCP協議與UDP協議的區別
TCP是面向連接的協議,簡單來說在收發數據的時候,兩端需要建立在一個可靠的連接上。一個TCP連接必須經過“3次對話”才能建立起來。而斷開連接需要“4次對話”,下面進行簡單的描述。
-
“三次對話”
-
主機A想給主機B發送了一段數據段,希望主機B回應要用什麼樣的方式當作起始數據。內容大概像:“我想發數據給你可以嗎?我應該怎麼開頭呢。”
-
主機B收到請求後,用一個帶有確認應答的(ACK)和同步序列號(SYN)標誌位的數據段響應主機A。內容為“好啊,你想什麼時候發送數據呢?開頭你就寫XXXX”
-
主機A回應主機B:“我現在就開始發送,你接著吧。”
這“3次對話”的目的是使數據包的發送和接收同步。經過“對話”主機A才開始向主機B發送數據。同時在“3次對話”的過程中並沒有應用層的數據。SYN這個標誌位只有在TCP建立連接的時候才會被置1,握手完成後SYN標誌位改為0。
-
-
“4次斷開連接”
-
主機A完成數據傳遞後,將控制位FIN修改為1,提出“我傳送好了,我下線了”
-
主機B收到請求後,確認A要下線了,就把ACK改為1。
-
主機B將控制位FIN修改為1,然後傳遞說“OK,那我也下線了”
-
主機A對主機B的回應進行確認,然後將ACK改為1.雙方交流結束。
-
-
名詞解釋
-
ACK是TCP報頭的控制位置之一,用於對數據進行確認。確認從主機B發出,用來告訴主機A,之前發送的信息是否都完整的收到了。比如說確認號為X,ACK=1,確認號才有效,表明說之前的內容完整的收到了,如果ACK=0,那麼就會請求重新發送數據。
-
SYN同步序列號,TCP建立時將這個位置設為1。
-
FIN是主機A要下線了,提出斷開數據時,將這個位置改為1。
-
-
-
UDP(User Data Protocal 用戶數據報協議)
UDP是一个非连接协议。 在传输之前主机A跟主机B不会建立连线。二者只是单纯的在进行资料交换。因此对主机A来说,UDP的传送速度仅仅受限制于应用程式生成资料的限制,计算机的能力,传输带宽的大小。对于主机B来说,UDP把每个消息都放在队列中,应用程式每次就到队列中拿取它要的内容。
由于不需要建立连接,因此不需要维护连接状态,包括收发状态等,因此一台主机可以对多个客户端发送内容。
UDP的信息包的标题很短,只有8个字节,相对于TCP的20个字节大小的信息报,开销很小。
发送的数量不限拥挤控制算法的调节,只受到应用软件生成速率,传输带宽,主机性能的限制。
UDP使用尽量使用最大努力传输,因为不需要保证可靠性,因此主机不需要维持复杂的链接状态表。
-
我们通常使用的“ping”命令来测试两台主机之间TCP/IP是否通信正常。ping的原理是使用IP和网络控制信息协议(ICMP),没有涉及到任何传输协议和应用程序。
-
ICMP协议规定:主机B必须返回ICMP回送应答消息源给主机A,如果主机A在一定时间内接收到应答,则主机B可达。
小结一下UDP和TCP之间的区别
- TCP是面向连接的协议,UDP是非连接协议
- 对系统资源的需求,UDP少,TCP多
- UDP程序结构简单
- UDP不保证资料的完整性,TCP保证资料完整性
- TCP保证资料顺序,UDP不保证