TCP/IP、UDP、FTP、HTTP、HTTPS的一些要点

 之前面试问了一些协议的基本原理和使用场景,自己说的不是很全面,记录一下一些回答要点:

TCP/IP(传输控制协议/互联网协议)

这个同学们可能比较了解,因为考试经常考到哈,其实就TCP/IP来说,就是互联网最基本的协议,也是互联网通信的基础。TCP/IP协议族由一系列协议组成,包括FTP、SMTP、TCP、UDP、IP等,它们共同协作以实现数据的可靠传输和网络的互联互通。

一、协议分层

TCP/IP协议采用了分层结构,每一层都负责不同的通信任务。四层模型包括(这个大家应该都比较了解,不赘述了):

  1. 物理层:主要定义物理设备标准,负责数据的物理传输。

  2. 数据链路层:如何格式化数据以进行传输,以及如何控制对物理介质的访问。

  3. 网络层:负责数据包的路由和转发,将数据从源端经过若干个中间节点传送到目的端,从而提供最基本的端到端的数据传输服务。

  4. 传输层:为上层协议提供端到端的可靠和透明的数据传输服务。传输层的主要协议包括TCP和UDP。

二、TCP基本原理

TCP协议通过以下几个机制来确保数据的可靠传输:

  1. 耳熟能详的三次握手:在数据传输开始前,通信双方需要进行三次握手以建立连接。确保双方的通信能力和通信参数的一致性。

  2. 数据分段与重组:TCP协议将待传输的数据分成多个数据包(段),并在接收端重新组装成原始数据,这有助于处理网络中的拥塞和错误。(其实我们java编程中处理媒体资源的断点续传是一样的)

  3. 确认应答机制:接收方在收到数据包后会发送确认应答给发送方,以确认数据包的正确接收。如果发送方在规定时间内未收到确认应答,则会重新发送数据包。(像不像消息队列的处理方式)

  4. 流量控制与拥塞控制(这个面试我就没说出来):TCP协议通过滑动窗口机制实现流量控制,以避免发送方发送过多数据导致接收方无法处理。同时,TCP还通过拥塞控制算法来减少网络中的拥塞情况。

三、IP基本原理

IP协议是网络层的核心协议,它负责数据包的路由和转发。IP协议的主要特点包括:

  1. 无连接性:IP协议在发送数据前不需要建立连接,这使得IP协议具有高度的灵活性和效率。

  2. 不可靠性:IP协议本身不提供可靠性保证,即IP数据包在传输过程中可能会出现丢失、乱序等问题。因此,通常需要与TCP协议等可靠性协议配合使用。

  3. 地址解析:IP协议使用IP地址来标识网络中的每个设备。IP地址由网络号和主机号两部分组成,用于实现数据包的路由和转发。

四、应用场景:

  • 需要可靠传输的应用,如网页浏览、电子邮件、文件传输等。

UDP(用户数据报协议)

一、主要特点

  1. 无连接:UDP在发送数据前不进行连接,发送结束时也没有连接可以释放,减少了开销和发送数据之前的时延。
  2. 不保证可靠传输:UDP不保证数据包的顺序、完整性或正确性,也不提供重传机制。如果数据包在传输过程中丢失或出错,UDP不会进行任何补救措施,直接丢弃错误的数据包。
  3. 面向报文:UDP以报文为单位进行传输,每个UDP报文都是独立的,保留报文的边界。发送方的UDP对应用程序交下来的报文,再添加首部后就向下交付IP层。接收方的UDP对IP层交上来的UDP用户数据报,在去除首部后就原封不动地交付上层的应用进程。
  4. 无拥塞控制:UDP不提供拥塞控制机制,它允许网络在拥塞时丢失数据,但不允许数据有太大的时延。这种特性使得UDP适用于实时性要求高且可以容忍少量数据丢失的应用场景。
  5. 支持多种交互通信:UDP支持一对一、一对多、多对一和多对多的交互通信,适用于需要广播或多播的应用场景。
  6. 首部开销小:UDP的首部只有8个字节,相比于TCP的首部(最小20字节,最大60字节)要小得多,这有助于减少网络带宽的占用,提高数据传输的效率。

二、基本原理

  1. 数据封装:当UDP想要传送数据时,它会抓取来自应用程序的数据将其封装成UDP报文,然后发送到网络上。(如何面试就说到了UDP报文,我觉得能说出这个就算不错了)
  2. 报文结构:UDP报文由首部和数据两部分组成:头部包含源端口号、目的端口号、长度和校验和等字段,用于标识报文的来源、目的地和校验报文的完整性。数据部分则包含应用程序要传输的实际数据。
  3. 传输过程:UDP将封装好的报文直接交给IP层进行传输,不需要建立连接。IP层将UDP报文封装成IP数据包,并通过网络发送给目的主机。
  4. 接收处理:在接收端,IP层将接收到的IP数据包解封装,得到UDP报文。然后,UDP将报文放入接收队列中,等待应用程序读取。由于UDP不保证可靠传输,因此接收方需要自行处理可能的数据丢失或乱序问题。

关于报文我百度回来了,背下来装逼吧:

UDP报文头(Header)

UDP报文头位于UDP报文的最前面,用于提供关于报文的基本信息。UDP报文头通常占用8个字节,包含以下四个字段:

  1. 源端口号(Source Port)
    • 占2个字节(16位),用于标识发送端的应用程序端口。源端口号是由发送端的应用程序随机选择或者由系统分配的,其范围通常是0到65535。需要注意的是,0到1023之间的端口号被保留为知名端口号,用于特定的服务或协议。
  2. 目的端口号(Destination Port)
    • 同样占2个字节(16位),用于标识接收端的应用程序端口。目的端口号是由接收端的应用程序在监听时指定的,以便UDP报文能够正确地送达目标应用程序。
  3. 长度(Length)
    • 占2个字节(16位),表示整个UDP报文(包括报头和数据部分)的长度。由于UDP报文头固定为8字节,因此这个字段的最小值是8,表示一个只包含报头的UDP报文。该字段的最大值通常为65535,但实际上,一个UDP报文的最大传输长度(MTU)受限于网络层,通常为64KB(65507字节,考虑到8字节的UDP头部和IP头部的开销)。
  4. 校验和(Checksum)
    • 占2个字节(16位),用于检测报文在传输过程中是否出现错误。校验和是可选的,但在大多数实现中都是启用的。发送方在发送UDP报文之前会计算整个报文的校验和,并将其放置在报头中。接收方在收到报文后,会重新计算报文的校验和,并与报头中的校验和进行比较,以验证报文的完整性。

UDP数据(Data)

UDP数据部分紧跟在报头之后,包含了实际要传输的应用程序数据。UDP协议不对数据进行任何处理(如拆分、重组、排序等),只是简单地将数据封装在UDP报文中进行传输。因此,UDP数据的长度是可变的,但整个UDP报文(包括报头和数据)的长度受到MTU的限制。

三、应用场景

由于UDP具有简单、高效、实时性强的特点,它适用于对实时性要求高且可以容忍少量数据丢失的应用场景,如实时音视频传输、在线游戏、DNS域名解析等。在这些场景中,UDP能够提供足够的性能,同时减少网络带宽和资源的占用。(来自百度)

所以我们说,UDP协议是一种无连接的、不保证可靠传输的、面向报文的传输层协议。它具有简单、高效、实时性强的特点,适用于特定的应用场景。然而,由于UDP不提供可靠传输机制,因此在需要确保数据完整性和可靠性的应用场景中,应谨慎使用或结合其他协议使用。

FTP(文件传输协议)

一、FTP的基本概念

FTP是一种用于在网络上进行文件传输的协议,允许用户以文件操作的方式(如文件的增删改查等)与另一主机相互通信。

话说回来 , FTP工作在OSI模型的第七层(应用层),TCP模型的第四层。帮大家复习一下:(图片来自网络)

二、FTP基本原理

  1. 连接建立
    • 客户和服务器在建立连接前要经过一个“三次握手”的过程,保证连接的可靠性。
    • FTP基于客户-服务器(C/S)模型设计,在客户端与FTP服务器之间建立两个连接:一条是数据连接,用于数据传送;另一条是控制连接,用于传送控制信息(命令和响应)。
  2. 数据传输
    • 在整个交互的FTP会话中,控制连接始终处于连接状态,而数据连接则在每一次文件传送时先打开后关闭。
    • 这种将命令和数据分开传送的思想大大提高了FTP的效率。
  3. 用户操作
    • 用户并不真正登录到自己想要存取的计算机上成为完全用户,而是使用FTP程序访问远程资源,实现文件的往返传输、目录管理以及访问电子邮件等。
    • FTP允许用户操作任何类型的文件而不需要进一步处理,就像MIME或Unicode一样。

三、FTP的应用场景

主要就是操作文件什么的,文件上传和下载,如网站文件管理、软件分发。

HTTP(至于http/s大家都应该是得心应手了,我简单说说)

基本原理:

请求-响应模型。客户端(如浏览器)通过发送HTTP请求到服务器,请求中包含请求方法、请求URI、HTTP版本、头部字段以及可能存在的请求体。服务器接收到请求后,生成相应的HTTP响应,包括状态码、响应头部和响应体,返回给客户端。

应用场景:

静态内容分发:如图片、CSS样式、JavaScript脚本等,这些内容无需加密,且浏览器通常允许缓存,使用HTTP能有效利用缓存优势,提高加载速度。

公开信息查询:如搜索引擎结果、新闻文章、公开API接口等,这些场景下数据的安全性要求较低,HTTP足以满足需求。

还有就是我们日常的开发和调试

在开发和调试阶段,使用HTTP可以加快开发速度,减少加密和认证带来的开销,使得项目更易于创建和测试。

安全性

HTTP本身并不提供安全机制,其数据以明文形式在网络中传输,易受到窃听、篡改、伪装等安全威胁。它不支持任何形式的身份验证或数据加密,无法保证通信的机密性和完整性

HTTPS

基本原理:

HTTPS在TCP连接之上增加了SSL/TLS握手过程以建立安全连接。握手涉及到密钥交换、身份验证和参数协商,完成后,双方使用协商好的加密算法进行数据传输。

加密通信:使用对称加密(如AES)和非对称加密(如RSA)相结合的方式,确保数据在传输过程中即使被截获也无法被解读。

身份验证:服务器通过提供SSL/TLS证书证明其身份,证书由受信任的证书颁发机构(CA)签发,包含服务器的公钥和身份信息。客户端在建立连接时会验证证书的有效性,确保与预期的服务器进行通信。

数据完整性:通过消息认证码(MAC)或数字签名,确保数据在传输过程中未被篡改。

应用场景:

需要安全传输的网页,如在线支付、登录页面,敏感信息之类的。

安全性

HTTPS通过SSL/TLS协议提供数据加密、服务器身份验证和数据完整性保护,有效防止了数据在传输过程中被窃听、篡改或伪造。

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值