TCP和UDP

TCP:

传输控制协议(TCP,Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793 定义。

UDP:

Internet 协议集支持一个无接的传输协议,该协议称为用户数据报协议(UDP,User Datagram Protocol)。UDP 为应用程序提供了一种无需建立连接就可以发送封装的 IP 数据包的方法。RFC 768 描述了 UDP。

区别:

1,TCP是面向链接的协议, 而UDP是无连接的协议; 2,TCP协议的传输是可靠的, 而UDP协议的传输“尽力而为”; 3,TCP协议可以实现流控, 而UDP不行; 4,TCP可以分段, 而UDP不行; 5,TCP消耗资源较大,传输效率较低; UDP耗费资源较小,速度快

UDP 使用场景:

因此UDP不提供复杂的控制机制,利用IP提供面向无连接的通信服务,随时都可以发送数据,处理简单且高效。

所以主要使用在以下场景:

包总量较小的通信(DNS、SNMP)

视频、音频等多媒体通信(即时通信)

QQ就是使用的UDP协议。

广播通信

主要是一切追求速度的场景上

TCP 使用场景:

相对于 UDP,TCP 实现了数据传输过程中的各种控制,可以进行丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。在对可靠性要求较高的情况下,可以使用 TCP,即不考虑 UDP 的时候,都可以选择 TCP。

特别是需要可靠连接,比如付费、加密数据等等方向都需要依靠TCP

什么是面向连接? 在正式传输数据之前,先适用预先的协议,建立点到点的链接。 TCP建立的连接实际建立了一个双向的会话连接,即通讯双方都可以向对方发送数据

TCP头部

1.16位端口号:包括了源端口号和目的端口号。进行TCP通信时,客户端通常使用系统自动选择的临时端口号(一般都很大),而服务器则使用知服务端口号或服务器管理员自定义的端口号。

2.32位序号:一次TCP通信过程中对一个传输方向上的字节流的每个字节的编号(从这个方向第一个报文段依次排列)。假设主机A和主机B进行TCP通信,A发送给B的第一个TCP报文段中的序号值是系统初始化的一个随机值ISN(初始序号值)。那么之后在A到B的方向上发送的TCP报文段中的序号值将会被系统设置为ISN加上该报文段所携带数据的第一个字节在整个数据字节流中的偏移。

3.32位确认号:用作对另一方发送来的TCP报文段做出相应。其值是收到对方的报文段的序号值加1。

4.4位头部长度:标识该TCP头部有多少个32bit字(4字节)。一共有4位,所以最大能表示TCP头部大小为60字节。

5.6位标志位包含如下几项:

URG标志,表示紧急指针是否有效。

ACK标志,表示确认号是否有效。一般称携带ACK标志的报文段是确认报文段。

PSH标志,提示接收端应用程序立即从TCP接受缓冲区读走数据。

RST标志,表示要求对方重新建立连接。称携带RST标志的TCP报文段为复位报文段。

SYN标志,表示请求建立一个连接。称携带SYN标志的TCP报文段为同步报文段。

FIN标志,表示通知对方本端将关闭连接。称携带FIN标志的TCP报文段为结束报文段。

6.16位窗口大小:是TCP流量控制的一个手段。这里说的窗口指的是接收通告窗口(RWND)。它告诉对方本端TCP接收缓冲区还能容纳多少字节的数据,以让对方控制发送数据的速度。

7.6位校验和:由发送端填充,接收端对TCP报文段执行CRC算法以效验TCP报文段在传输过程中是否损坏(包括TCP头部和数据部分)。这也是TCP可靠传输的一个重要保障。

8.16位紧急指针:是一个正的偏移量。它和序号字段的值相加表示最后一个紧急数据的下一字节的序号。即这个字段是紧急指针相对当前序号的偏移,为紧急偏移。以让接收端迅速接受到紧急数据。TCP的紧急指针是发送端向接收端发送紧急数据的方法。

三次招手

四次挥手

DUP头部

头部结构中各部分的作用:

(1)16位源端口号 记录源端口号,在需要对方回信时选用。不需要时可用全0。

(2)16位目的端口号 记录目标端口号。这在终点交付报文时必须要使用到。

(3)长度 UDP数据报的长度(包括数据和首部),其最小值为8B(即仅有首部没有数据的情况)。(4)校验和 检测UDP数据报在传输中是否有错,有错就丢弃。该字段时可选的,当源主机不想计算校验和,则直接令该字段为全0。当传输层从IP层收到UDP数据报时,就根据首部中的目的端口,把UDP数据报通过相应的端口,上交给进程。如果接收方UDP发现收到的报文中目的端口号不正确(即不存在对应端口号的应用程),就丢弃该报文,并由ICMP发送“端口不可达”差错报文交给发送方。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值