「客户端」学习网络编程,不了解TCP协议?难怪面试被刷下去,还不来学习!( 三 )
TCP 四元组可以唯一的确定一个连接 , 四元组包括如下:
- 源地址
- 源端口
- 目的地址
- 目的端口
源地址和目的地址的字段(32位)是在 IP 头部中 , 作用是通过 IP 协议发送报文给对方主机 。
源端口和目的端口的字段(16位)是在 TCP 头部中 , 作用是告诉 TCP 协议应该把报文发给哪个进程 。
有一个 IP 的服务器监听了一个端口 , 它的 TCP 的最大连接数是多少?
服务器通常固定在某个本地端口上监听 , 等待客户端的连接请求 。
因此 , 客户端 IP 和 端口是可变的 , 其理论值计算公式如下:
对 IPv4 , 客户端的 IP 数最多为
2
的 32
次方 , 客户端的端口数最多为 2
的 16
次方 , 也就是服务端单机最大 TCP 连接数 , 约为 2
的 48
次方 。当然 , 服务端最大并发 TCP 连接数远不能达到理论上限 。
- 首先主要是文件描述符限制 , Socket 都是文件 , 所以首先要通过 ulimit 配置文件描述符的数目;
- 另一个是内存限制 , 每个 TCP 连接都要占用一定内存 , 操作系统是有限的 。
UDP 不提供复杂的控制机制 , 利用 IP 提供面向「无连接」的通信服务 。
UDP 协议真的非常简 , 头部只有
8
个字节( 64 位) , UDP 的头部格式如下:- 目标和源端口:主要是告诉 UDP 协议应该把报文发给哪个进程 。
- 包长度:该字段保存了 UDP 首部的长度跟数据的长度之和 。
- 校验和:校验和是为了提供可靠的 UDP 首部和数据而设计 。
1. 连接
- TCP 是面向连接的传输层协议 , 传输数据前先要建立连接 。
- UDP 是不需要连接 , 即刻传输数据 。
- TCP 是一对一的两点服务 , 即一条连接只有两个端点 。
- UDP 支持一对一、一对多、多对多的交互通信
- TCP 是可靠交付数据的 , 数据可以无差错、不丢失、不重复、按需到达 。
- UDP 是尽最大努力交付 , 不保证可靠交付数据 。
- TCP 有拥塞控制和流量控制机制 , 保证数据传输的安全性 。
- UDP 则没有 , 即使网络非常拥堵了 , 也不会影响 UDP 的发送速率 。
- TCP 首部长度较长 , 会有一定的开销 , 首部在没有使用「选项」字段时是 20 个字节 , 如果使用了「选项」字段则会变长的 。
- UDP 首部只有 8 个字节 , 并且是固定不变的 , 开销较小 。
由于 TCP 是面向连接 , 能保证数据的可靠性交付 , 因此经常用于:
- FTP 文件传输
- HTTP / HTTPS
推荐阅读
- 工业互联网@程序员的术与道:术——编程基本功之网络编程
- 可可酱不插电,无网络限制,学习工作效率更高,移动A4打印机:760g
- Hi威海客户端南海新区:精准护航让企业“满血复活”
- 南方Plus客户端向全球直播卖货,广州皮具商拟抱团进驻网上广交会
- 南方Plus客户端全国首台校园病毒智能监测机在深圳试用,风险“早”知道
- 简简科技机器学习修炼手册:从倔强青铜到最强王者
- 新华网客户端1800亿元投资发力数字新基建,广州市首批73个数字新基建重大项目签约
- 南方Plus客户端广州给大湾区带来什么新气象?,南方观察|1800亿新基建项目
- 北京日报客户端国家卫健委:互联网医疗不得突破现有法律法规
- 南方Plus客户端这款以色列研发的temi机器人有何亮点?,智能家居时代