TCP/IP详解

TCP/IP 协议

什么是 TCP/IP 协议

OSI 七层架构 TCP/IP 四层模型 协议
应用层 HTTP、SMTP、SNMP、FTP、Telnet、SIP、SSH、NFS
表示层 应用层 XDR、ASN.1、NCP、TLS、ASCII
会话层 sockets、SOCKS、PAP
传输层 传输层 TCP、UDP、RTP、SCTP
网络层 网络互连层 IP、ICMP、IPX、BGP、OSPF、RIP、IGRP、EIGRP
数据链路层 网络访问(链接)层 以太网、令牌环、HDLC、帧中继、ISDN、ATM、IEEE 802.11
物理层 调制解调器、无线电、光纤

报文结构

TCP 报文段首部格式
TCP报文段

  1. 源端口和目的端口:各占 2 个字节,分别写入源端口和目的端口。IP 地址 + 端口号就可以确定一个进程地址

  2. 序号/序列号(Sequense Number,SN):在一个 TCP 连接中传送的字节流中的每一个字节都按顺序编号。该字段表示本报文段所发送的数据的第一个字节的序号。初始序号称为 Init Sequense Number, ISN(序号/序列号这个字段很重要,大家留个印象,下文会详细讲解) 例如,一报文段的序号是 101,共有 100 字节的数据。这就表明:本报文段的数据的第一个字节的序号是 101,最后一个字节的序号是 200。显然,下一个报文段的数据序号应当从 201 开始,即下一个报文段的序号字段值应为 201。

  3. 确认号 ack:期望收到对方下一个报文段的第一个数据字节的序号。若确认号为 N,则表明:到序号 N-1 为止的所有数据都已正确收到。

  4. 数据偏移(首部长度):它指出 TCP 报文段的数据起始处距离 TCP 报文段的起始处有多远。这个字段实际上是指出 TCP 报文段的首部长度。

  5. 保留:占 6 位,应置为 0,保留为今后使用。

TCP 三次握手

三次握手

TCP 四次挥手

四次挥手

TCP/IP 其他问题

  1. TCP 与 UDP 的区别
    (1)TCP:面向连接,可靠的,速度慢,效率低。
    (2)UDP:无连接、不可靠、速度快、效率高。

当进程需要传输可靠的数据时应使用 TCP,当进程需要高效传输数据,可以忽略可靠性时应使用 UDP 协议。