文章目录
概念先整清楚
TCP协议和UDP协议与TCP/IP协议的联系
TCP/IP协议
是一个协议簇
,里面包括很多协议的,UDP只是其中的一个,之所有命名为TCP/IP协议
,因为TCP、IP协议是两个很重要的协议 ,所以就用他们命名了
TCP/IP协议簇
包括应用层、传输层、网络层、网络访问层
-
应用层包括:
- 超文本传输协议 HTTP,万维网的基本协议。
- 文件传输 TFTP。
- 远程登录 Telnet,提供远程访问其他主机功能。
- 网络管理 SNMP 简单网络管理协议,该协议提供了监控网络设备的方法,以及配置管理,统计信息收集,性能管理及安全管理等;
- 域名系统 DNS , 将域名转换成IP地址
-
传输层包括
- TCP,面向连接的TCP传输控制协议,列举一些运行在TCP协议上的应用层协议
- HTTP,主要用于普通浏览。
- HTTPS , 安全超文本传输协议,HTTP协议的安全版本
- FTP,文件传输协议,用于文件传输。
- POP3,邮局协议,收邮件用。
- SMTP,简单邮件传送协议,用来发送电子邮件
- TELNET,通过一个终端terminal登录到网络。
- SSH,用于替代安全性差的TELNET,用于加密安全登录用。
- UDP,无连接的包传输的UDP用户数据报文协议,列举一些运行在UDP协议上的应用层协议:
- BOOTP,启动协议,应用于无盘设备
- NTP,网络时间协议,用于网络同步
- DHCP,动态主机配置协议,动态配置IP地址
- DCCP 数据拥塞控制协议
- SCTP 流控制传输协议
- TCP,面向连接的TCP传输控制协议,列举一些运行在TCP协议上的应用层协议
-
网络层包括
- Internet协议,IP协议。
- Internet控制信息协议,ICMP。
- 地址解析协议,ARP。
- 反向地址解析协议,RARP。
-
网络访问层(主机到网络层 , host-to-network)
TCP/IP四层模式里最后一层对应OSI七层里的数据链路层和物理层,主要功能包括IP地址与物理地址硬件的映射,以及将IP数据报封装成帧。
TCP和UDP区别 (面试常问)
关于这个问题,我也被问了好几次了,每次都答不完整,在这里好好整理一下,方便查阅。
- TCP,是面向连接;
- UDP,是无连接。
- TCP,点对点全双工通信;
- UDP,一对一、一对多(广播)、多对一、多对多的交互通信。
- TCP,面向字节流(把上层即应用层传下来的报文看出字节流,然后组织成大小不等数据块);
- UDP,面向报文(对报文不合并也不拆分,只添加UDP首部8字节)。
- TCP,是可靠的(无差错,不丢失,不重复,概括保证数据正确性,且按序到达);
- UDP,尽最大可能交付的(是不可靠的)。
- TCP,有拥塞控制、流量控制(下面会说明);
- UDP,没有拥塞控制,即如果网络出现拥塞,也不会让发送方主机降低发送速率;视频传输(在线视频)、实时通信(QQ聊天)、语言传输(电话),对数据准确性和丢包要求比较低,但速度必须快的。
TCP & UDP 特点
- 传输控制协议 TCP(Transmission Control Protocol)是
面向连接的
,提供可靠交付
,有流量控制,拥塞控制
,提供全双工通信
,面向字节流
(把应用层传下来的报文看成字节流,把字节流组织成大小不等的数据块),每一条 TCP 连接只能是点对点
的(一对一)。 - 用户数据报协议 UDP(User Datagram Protocol)是
无连接的
,尽最大可能交付
,没有拥塞控制
,面向报文
(对于应用程序传下来的报文不合并也不拆分,只是添加 UDP 首部),支持一对一、一对多、多对一和多对多的交互通信
。
TCP 首部格式
-
序号 :用于对字节流进行编号,例如序号为 301,表示第一个字节的编号为 301,如果携带的数据长度为 100 字节,那么下一个报文段的序号应为 401。
-
确认号 :期望收到的下一个报文段的序号。例如 B 正确收到 A 发送来的一个报文段,序号为 501,携带的数据长度为 200 字节,因此 B 期望下一个报文段的序号为 701,B 发送给 A 的确认报文段中确认号就为 701。
-
数据偏移 :指的是数据部分距离报文段起始处的偏移量,实际上指的是首部的长度。
-
确认 ACK :当 ACK=1 时确认号字段有效,否则无效。TCP 规定,在连接建立后所有传送的报文段都必须把 ACK 置 1。
-
同步 SYN :在连接建立时用来同步序号。当 SYN=1,ACK=0 时表示这是一个连接请求报文段。若对方同意建立连接,则响应报文中 SYN=1,ACK=1。
-
终止 FIN :用来释放一个连接,当 FIN=1 时,表示此报文段的发送方的数据已发送完毕,并要求释放连接。
-
窗口 :窗口值作为接收方让发送方设置其发送窗口的依据。之所以要有这个限制,是因为接收方的数据缓存空间是有限的。