传输层:1.TCP基本认识

1.TCP基本认识

在这里插入图片描述
序列号:建立连接时候,计算机随机生成的数作为初始值,通过SYN发送,每发送一次累加一次该数据的字节数,用来解决网络包乱序问题。

确认应答号:指期望下一次收到的数据包序列号,客户端收到表示在该序号之前的数据都已经全部送达。用来解决不丢包问题。

控制位:

  • ACK:表示确认收到数据,除了建立连接的时候,其他时候都为1。
  • RST:出现异常需要中断TCP连接。
  • SYN:表示请求建立连接。
  • FIN:表示请求断开连接。

2.为什么需要TCP协议?TCP工作在哪一层

网络层IP协议是不可靠的,它不能保证数据包的完整性。
TCP工作在传输层的可靠传输服务。它能确保接收端收到的网络包是无损坏的、无间隔的、非冗余的。

3.什么是TCP?

TCP是面向连接的、可靠的、基于字节流的传输层通信协议。
面向连接的:是指它只能一对一连接,不能像UDP那样一对多。
可靠的:是指TCP协议可以确保每个数据都到达。不像UDP那样不确保数据到达。
基于字节流的:是指TCP协议是按数据块发送的,不区分边界,而UDP是一个报文一个报文发送的。所以TCP可能会产生粘包和乱序问题。

4.什么是TCP连接

TCP连接包括Socket、序列号和窗口大学这些用于保证可靠性和流量控制的信息。

Socket:IP地址和端口号构成
序列号:用来解决乱序问题的
窗口大小:用来做流量控制

5.如何确定唯一的TCP连接呢

TCP四元组:

  • 源地址
  • 源端口号
  • 目标地址
  • 目标端口号

6.有一个IP的服务器监听了一个端口,它的TCP的最大连接数是多少?

最大TCP连接数=客户端的IP数X客户端的端口数

对于IPv4来说,客户端的IP数为2的32次方,客户端的端口数最多为2的16次方。
所以TCP最大连接数约为2的48次方。

因为文件描述符限制和内存限制,所以TCP连接数远远不能达到理论上限。

7.UDP和TCP有什么区别呢?分别的应用场景是?

UDP不提供复杂的控制机制,利用IP提供面向无连接的通信服务。
UDP协议很简单,头部只有8个字节(64位),UDP的头部格式如下:
在这里插入图片描述

  • 目标和源端口:主要是告诉UDP协议应该把报文发给哪个进程
  • 包长度:该字段保存了UDP首部的长度和数据长度之和。
  • 校验和:校验和是为了提供可靠的UDP首部和数据而设计

TCP和UDP区别:

  1. 连接
    • TCP是面向连接的传输层协议,传输数据前先要建立连接
    • UDP是不需要连接,即刻传输数据
  2. 服务对象
    • TCP是一对一的两点服务,即一条连接只有两个端点
    • UDP支持一对一、一对多、多对多的交互通信
  3. 可靠性
    • TCP是可靠交付数据,数据可以无差错、不丢失、不重复、按需到达
    • UDP是尽最大努力交付,不保证可靠交付数据
  4. 拥塞控制、流量控制
    • TCP有拥塞控制和流量控制机制,保证数据传输的安全性
    • UDP则没有,即使网络非常拥堵了,也不会影响UDP的发送速率
  5. 首部开销
    • TCP首部长度较长,会有一定的开销,首部在没有使用选项字段时是20个字节,如果使用了选项字段则会变长的。
    • UDP首部只有8个字节,并且是固定不变的,开销较小。
  6. 传输方式
    • TCP是流式传输,没有边界,但保证顺序和可靠
    • UDP是一个包一个包的发送,是有边界的,但可能会丢包和乱序
  7. 分片不同
    • TCP的数据大小如果大于MSS大小,则会在传输层进行分片,目标主机收到后,也同样在传输层组装TCP数据包,如果中途丢失了一个分片,只需要传输丢失的这个分片。
    • UDP的数据大小如果大于MTU大小,则会在IP层进行分片,目标主机收到后,在IP层组装完数据,接着再传给传输层,但是如果中途丢了一个分片,在实现可靠传输的UDP时则需要重传所有的数据包,这样传输效率非常差,所以通常UDP的报文应该小于MTU

注:MSS是基于TCP层的最大报文长度
MTU是基于IP层的最大传输单元
MTU>>MSS

TCP和UDP的应用场景:
由于TCP是面向连接,能保证数据的可靠性交付,因此经常用于:

  • FTP文件传输
  • HTTP/HTTPS
    由于UDP面向无连接,它可以随时发送数据,再加上UDP本身的处理既简单又高效,因此经常用于:
  • 包总量较少的通信,如DNS、SNMP等
  • 视频、音频等多媒体通信
  • 广播通信

8.为什么UDP头部没有首部长度字段?而TCP头部有首部长度字段呢?

原因是TCP有可变长的选项字段,而UDP头部长度则是不会变化的,无需多一个字段去记录UDP的首部长度。

9.为什么UDP头部有包长度,而TCP头部没有包长度呢?

为了补全UDP首部长度是4字节的整数倍,才补充了包长度字段。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值