TCP/UDP
传输控制协议(TCP): 提供可靠的、面向连接的数据传输服务,确保数据按顺序到达,并能够进行重传和流量控制。
用户数据报协议(UDP):提供无连接的数据传输服务,不保证数据的可靠性和顺序性,适用于实时性要求高、对数据传输延迟要求较低的应用场景。
TCP 是一种面向连接的传输协议,它在数据传输之前需要先建立一个虚拟的连接,通过三次握手等过程进行连接确认和参数协商,然后才能进行数据传输。TCP 还提供了可靠的数据传输服务,保证数据的顺序和完整性,因此适用于对数据可靠性要求较高的应用,如文件传输、电子邮件等。
UDP 是一种无连接的传输协议,它不需要事先建立连接,只需要将数据报文发送到目标地址即可。UDP 不提供可靠性保证和数据重传机制,因此传输速度较快,但数据的顺序和完整性不能得到保障。UDP 适用于实时性要求较高的应用,如音视频传输、DNS 查询等。
视频会议和语音通话是使用的UDP协议?
视频会议和语音通话通常使用的协议中,既有基于 UDP 的协议,也有基于 TCP 的协议。具体协议的选择取决于应用程序的需求和优化目标。
对于实时音视频应用来说,UDP 协议通常比 TCP 更适合,因为 UDP 无需进行握手、序列号等复杂的控制机制,传输数据的延迟较低,适合处理实时流媒体数据。在 UDP 中,数据报文没有数据重传和流量控制等机制,因此传输过程中可能会出现丢包、乱序等问题,但这些问题可以通过应用层的一些措施进行缓解,如 FEC(Forward Error Correction)纠错等技术。
一些常用的基于 UDP 的协议包括 RTP(Real-time Transport Protocol)和 RTCP(RTP Control Protocol),它们常用于音视频流的传输和控制。同时,UDP 还能够支持一些自定义的协议,比如 Skype 使用自己的协议进行音视频通话。
不过,也有一些实时音视频应用采用了基于 TCP 的协议,主要是因为 TCP 在网络拥塞的情况下更加稳定,能够保证数据的可靠性。同时,TCP 也有流量控制、拥塞控制等机制,可以避免网络过载和数据丢失等问题。一些基于 TCP 的协议包括 HTTP(Hypertext Transfer Protocol)和 SIP(Session Initiation Protocol)等,它们在音视频通信中也有一定的应用。
TCP和UDP—报文格式
TCP和UDP—端口号
TCP的建立—三次握手
任何基于TCP的应用,在发送数据之前,都需要由TCP进行“三次握手”建立连接。
TCP的序列号和确认序列号
TCP使用序列号和确认序列号字段实现数据的可靠和有序传输。
思考 : 为什么PC1所发报文的Ack字段没有增长 ?
因为PC2返回的载荷是0。
TCP的窗口滑动机制
TCP通过滑动窗口机制来控制数据的传输速率。
TCP的四次挥手
当数据传输完成,TCP需要通过“四次挥手”机制断开TCP连接,释放系统资源。
ARP
ARP(Address Resolution Protocol)是一种用于将 IP 地址解析为 MAC 地址的协议。在局域网中,当一台主机需要发送数据到另一台主机时,它通常知道目标主机的 IP 地址,但是不知道目标主机的 MAC 地址。在这种情况下,ARP 协议就起到了关键的作用。
ARP 协议的工作原理如下:
- 当一台主机需要将 IP 地址解析为 MAC 地址时,它会首先在自己的 ARP 缓存中查找目标 IP 地址对应的 MAC 地址。
- 如果找不到对应的 MAC 地址,该主机将发送一个 ARP 请求广播到局域网中的所有主机,请求目标 IP 地址对应的 MAC 地址。
- 其他主机收到这个 ARP 请求后,如果发现自己的 IP 地址与请求中的目标 IP 地址匹配,则会向发送请求的主机发送 ARP 响应,包含自己的 MAC 地址。
- 发送请求的主机收到 ARP 响应后,就可以将目标 IP 地址与对应的 MAC 地址进行绑定,并更新自己的 ARP 缓存。
通过这种方式,ARP 协议能够帮助主机解析 IP 地址和 MAC 地址之间的映射关系,从而实现局域网内主机之间的通信。值得注意的是,ARP 协议仅适用于同一局域网内的主机通信,无法跨越路由器进行通信。
arp表存储在主机上,当主机关机后arp表中内容会清空吗?
当主机关机后 ARP 表中的内容会被清空。
ARP 表是存储在主机的内存中的,它记录了与该主机通信过程中所遇到的 IP 地址与 MAC 地址映射关系。当主机正常运行时,ARP 表会不断地被更新和维护,以保证它的准确性。但是,当主机关机后,所有存在于内存中的数据都会被清空,包括 ARP 表。
当主机重新启动时,它需要重新建立起与其他主机之间的通信,这时会再次发送 ARP 请求来获取目标主机的 MAC 地址,并将新的映射关系记录到 ARP 表中。因此,ARP 表的内容是动态变化的,它随着主机的运行状况而不断更新。
ICMP
ICMP用来传递差错、控制、查询等信息。
ICMP的差错检测
ICMP Echo Request和ICMP Echo Reply分别用来查询和响应某些信息,进行差错检测。
ICMP错误报告
当网络设备无法访问目标时,会自动发送ICMP目的不可达报文到发送端设备。