网络编程运输层TCP/UDP面试知识点(上)

简介: 网络编程运输层TCP/UDP面试知识点

1 功能

1.1 进程间通信

  • 从通信和信息处理的角度看,运输层向应用层提供通信服务,它属于面向通信部分的最高层,同时也是用户功能中的最底层
  • 当网络的边缘部分中的两个主机使用网络的核心部分的功能进行端到端的通信时,只有位于网络边缘部分的主机的协议栈才有运输层,而网络核心部分中的路由器在转发分组时都只用到下三层的功能
  • 运输层为相互通信的应用进程提供了逻辑通信
  • image.png

1.2 应用进程间通信

  • 两个主机进行通信实际上是两个主机中的应用进程通信
  • 应用进程间通信又称为端到端的通信
  • 运输层的一个很重要的功能就是复用和分用,应用层不同进程的报文通过不同的端口向下交到运输层,再往下就共用网络层提供的服务。
  • 运输层提供应用进程间的逻辑通信
    “逻辑通信”:运输层之间的通信好像是沿水平方向传送数据。但事实上这两个运输层之间并没有一条水平方向的物理连接。
  • 运输层协议和网络层协议的主要区别

image.png

1.3 运输层的主要功能

  • 为应用进程之间提供端到端的逻辑通信
  • 对收到的报文进行差错检测
  • 需要有两种不同的运输协议,即面向连接的 TCP 和无连接的 UDP。

1.4 两种不同的运输协议

  • 运输层向高层用户屏蔽了下面网络核心的细节,它使应用进程看见的就是好像在两个运输层实体之间有一条端到端的逻辑通信信道
  • 当运输层采用面向连接的 TCP 协议时,尽管下层的网络都是不可靠的(只提供尽最大努力服务),但这种逻辑通信信道就相当于一条全双工的可靠信道
  • 当运输层采用无连接的 UDP 协议时,这种逻辑通信信道是一条不可靠信道

2 UDP与TCP异同

2.1 TCP 与 UDP

  • 两个对等运输实体在通信时传送的数据单位叫作运输协议数据单元 TPDU (Transport Protocol Data Unit)。
  • TCP 传送的数据单位协议是 TCP 报文段(segment)
  • UDP(User Datagram Protocol) 传送的数据单位协议是 UDP 报文或用户数据报
  • TCP/IP 体系中的运输层协议
  • image.png
  • UDP 在传送数据之前不需要先建立连接。对方的运输层在收到 UDP 报文后,不需要给出任何确认。虽然 UDP 不提供可靠交付,但在某些情况下 UDP 是一种最有效的工作方式。
  • TCP 提供面向连接的服务,TCP 不提供广播或多播服务。由于 TCP 要提供可靠的、面向连接的运输服务,因此不可避免地增加了许多的开销。这不仅使协议数据单元的首部增大很多,还要占用许多的处理机资源
  • 运输层的 UDP 用户数据报与网际层的IP数据报有很大区别。IP 数据报要经过互连网中许多路由器的存储转发,但 UDP 用户数据报是在运输层的端到端抽象的逻辑信道中传送的。
  • TCP 报文段是在运输层抽象的端到端逻辑信道中传送,这种信道是可靠的全双工信道。但这样的信道却不知道究竟经过了哪些路由器,而这些路由器也根本不知道上面的运输层是否建立了 TCP 连接。

3.1 运输层的端口

运行在计算机中的进程是用进程标识符来标志。运行在应用层的各种应用进程却不应当让os指派它的进程标识符。这是因为在因特网上使用os种类很多,而不同os又使用不同格式的进程标识符。为使运行不同os的计算机的应用进程能够互相通信,就必须用统一的方法对 TCP/IP 体系的应用进程进行标志

3.2 需要解决的问题

由于进程的创建、撤销都是动态的,发送方几乎无法识别其他机器上的进程。

有时我们会改换接收报文的进程,但无需通知所有发送方。我们往往需要利用目的主机提供的功能来识别终点,而无需知道实现这个功能的进程。

解决这个问题的方法就是在运输层使用协议端口号(protocol port number),简称为端口(port)。

虽然通信的终点是应用进程,但我们可以把端口想象是通信的终点,因为我们只需将要传送的报文交到目的主机的某个合适的目的端口,后续工作(即最后交付目的进程)就由 TCP 完成。


软件端口与硬件端口

  • 在协议栈层间的抽象的协议端口是软件端口
  • 路由器或交换机上的端口是硬件端口
  • 硬件端口是不同硬件设备进行交互的接口,而软件端口是应用层的各种协议进程与运输实体进行层间交互的一种地址

3.3 TCP 的端口

端口用一个 16 位端口号进行标志。端口号只具有本地意义,即端口号只是为了标志本计算机应用层中的各进程。在因特网中不同计算机的相同端口号无任何联系。

3.4 端口的分类

  • 熟知端口,0~1023
  • 登记端口号,1024~49151,为没有熟知端口号的应用程序使用的。使用这个范围的端口号必须在 IANA 登记,以防止重复
  • 客户端口号或短暂端口号,49152~65535,留给客户进程选择暂时使用。当服务器进程收到客户进程的报文时,就知道了客户进程所使用的动态端口号。通信结束后,这个端口号可供其他客户进程以后使用
目录
相关文章
|
20天前
|
网络协议
Qt中的网络编程(Tcp和Udp)运用详解以及简单示范案例
Tcp和Udp是我们学习网络编程中经常接触到的两个通讯协议,在Qt也被Qt封装成了自己的库供我们调用,对于需要进行网络交互的项目中无疑是很重要的,希望这篇文章可以帮助到大家。 是关于Qt中TCP和UDP的基本使用和特点:
|
14天前
|
存储 算法 安全
Java面试题:Java内存模型及相关知识点深度解析,Java虚拟机的内存结构及各部分作用,详解Java的垃圾回收机制,谈谈你对Java内存溢出(OutOfMemoryError)的理解?
Java面试题:Java内存模型及相关知识点深度解析,Java虚拟机的内存结构及各部分作用,详解Java的垃圾回收机制,谈谈你对Java内存溢出(OutOfMemoryError)的理解?
23 0
|
9天前
|
网络协议 算法 程序员
提高网络稳定性的关键:TCP滑动窗口与拥塞控制解析
**TCP可靠传输与拥塞控制概要:** 小米讲解TCP如何确保数据可靠性。TCP通过分割数据、编号段、校验和、流量控制(滑动窗口)和拥塞控制(慢开始、拥塞避免、快重传、快恢复)保证数据安全传输。拥塞控制动态调整窗口大小,防止网络过载,提升效率。当连续收到3个相同ACK时执行快重传,快恢复避免剧烈波动。关注“软件求生”获取更多技术内容。
29 4
提高网络稳定性的关键:TCP滑动窗口与拥塞控制解析
|
17小时前
|
缓存 网络协议 网络性能优化
网络协议详解:TCP/IP与HTTP
【7月更文挑战第24天】TCP/IP协议和HTTP协议是现代互联网通信的重要基石。TCP/IP协议提供了计算机之间数据传输和通信的底层支持,而HTTP协议则在此基础上实现了超文本数据的传输。随着互联网的不断发展,TCP/IP协议和HTTP协议将继续发挥重要作用,为各种网络应用提供稳定、高效的通信服务。
|
7天前
|
网络协议 程序员
TCP报文格式全解析:网络小白变高手的必读指南
**TCP报文格式详解摘要** 探索TCP,传输层的关键协议,提供可靠数据传输。报文含源/目的端口(标识应用),32位序号(跟踪字节顺序),确认序号(确认接收),4位首部长度,6位标志(URG, ACK, PSH, RST, SYN, FIN),窗口大小(流量控制),检验和(数据完整性),紧急指针(优先数据)及可变长选项(如MSS, 时间戳)。了解这些字段,能更好地理解TCP连接的建立、管理和数据交换。
22 3
|
13天前
|
网络协议 程序员 定位技术
学习网络的第一步:全面解析OSI与TCP/IP模型
**网络基础知识概览:** 探索网络通信的关键模型——OSI七层模型和TCP/IP五层模型。OSI模型(物理、数据链路、网络、传输、会话、表示、应用层)提供理论框架,而TCP/IP模型(物理、数据链路、网络、传输、应用层)更为实际,合并了会话、表示和应用层。两者帮助理解数据在网络中的传输过程,为网络设计和管理提供理论支持。了解这些模型,如同在复杂的网络世界中持有了地图。
21 2
|
20天前
|
网络协议 网络架构
【网络编程入门】TCP与UDP通信实战:从零构建服务器与客户端对话(附简易源码,新手友好!)
在了解他们之前我们首先要知道网络模型,它分为两种,一种是OSI,一种是TCP/IP,当然他们的模型图是不同的,如下
|
14天前
|
存储 并行计算 安全
Java面试题:Java内存管理、多线程与并发框架的面试题解析与知识点梳理,深入Java内存模型与垃圾回收机制,Java多线程机制与线程安全,Java并发工具包与框架的应用
Java面试题:Java内存管理、多线程与并发框架的面试题解析与知识点梳理,深入Java内存模型与垃圾回收机制,Java多线程机制与线程安全,Java并发工具包与框架的应用
20 0
|
14天前
|
Java
Java面试题:Java内存模型与并发编程知识点,解释Java中“happens-before”的关系,分析Java中的内存一致性效应(Memory Consistency Effects)及其重要性
Java面试题:Java内存模型与并发编程知识点,解释Java中“happens-before”的关系,分析Java中的内存一致性效应(Memory Consistency Effects)及其重要性
11 0
|
1月前
|
网络协议 JavaScript 安全
深入浅出TCP 与 UDP
深入浅出TCP 与 UDP
47 0