计算机网络高频(二)TCP/IP基础

1.什么是TCP/IP⭐⭐

TCP/IP是一种网络通信协议,它是互联网中最常用的协议之一。TCP/IP有两个基本的协议:TCP(传输控制协议)和IP(互联网协议)。

  • TCP(Transmission Control Protocol,传输控制协议)是一种可靠的、面向连接的协议。它负责在网络上将数据分割成小的数据包,并且确保这些数据包按照正确的顺序传输到目标设备。TCP还提供了丢包重传、拥塞控制和流量控制等功能,以保证数据的可靠传输。
  • IP(Internet Protocol,互联网协议)是一种网络层协议,它负责在网络上将数据包从源设备路由到目标设备。IP使用唯一的IP地址标识设备,并且通过路由器将数据包从一个网络传递到另一个网络。IP还负责处理分组的分片和重组,以适应不同网络的最大传输单元(MTU)。

TCP/IP将这两个协议结合在一起,提供了可靠的、端到端的数据传输。它是互联网通信的基础,支持各种应用程序(如Web浏览器、电子邮件、文件传输等)进行网络通信。TCP/IP还支持多种其他协议,如UDP(用户数据报协议)、FTP(文件传输协议)、SMTP(简单邮件传输协议)等等。

TCP报文格式

  1. 源端口(Source Port):16位字段,表示发送端口号,用于标识发送方的应用程序或服务。
  2. 目标端口(Destination Port):16位字段,表示接收端口号,用于标识接收方的应用程序或服务。
  3. 序列号(Sequence Number):32位字段,用于按顺序组装数据报文,保证数据可靠传输。
  4. 确认号(Acknowledgment Number):32位字段,表示期望接收的下一个字节的序列号,用于确认接收到的数据。
  5. 数据偏移(Data Offset):4位字段,表示TCP头部的长度,用于指示TCP报文中数据区的起始位置。
  6. 保留位(Reserved):6位字段,保留供将来使用,目前保持为0。
  7. 控制位(Flags):6位字段,用于标识TCP报文的控制信息,包括:URG(Urgent):表示紧急指针字段是否有效。ACK(Acknowledgment):表示确认号字段是否有效。PSH(Push):表示接收方应尽快将数据交给应用程序。RST(Reset):表示重置连接。SYN(Synchronize):用于建立连接。FIN(Finish):用于关闭连接。
  8. 窗口大小(Window Size):16位字段,表示发送方期望接收的字节量,用于流量控制。
  9. 校验和(Checksum):16位字段,用于检测TCP头部和数据的完整性。

10.紧急指针(Urgent Pointer):16位字段,仅在URG标志为1时有效,表示紧急数据的末尾位置。

11.选项(Options):可选字段,用于提供额外的功能,如选择确认、最大段大小等。

2.说说TCP的可靠机制。⭐⭐⭐

序列号和确认机制:

  • TCP报文使用序列号和确认号字段来实现数据的可靠传输。发送方的TCP将每个字节的数据进行编号,并按序发送。接收方根据接收到的字节进行确认,并回复确认号,表示期望接收的下一个字节的序列号。如果发送方未收到确认,或者收到的数据有丢失、重复或损坏,发送方将重传数据。

超时重传机制:

  • TCP使用超时重传机制来处理丢失的数据或确认。发送方设置一个定时器,在发送数据后等待一段时间,如果在该时间内未收到确认,发送方会假设数据丢失,并重传数据。接收方通过确认号来判断是否有丢失的数据,如果接收到重复的数据,将丢弃并发送确认。

滑动窗口:

  • TCP使用滑动窗口机制来进行流量控制。每个TCP报文中包含一个窗口大小字段,发送方根据接收方的窗口大小来控制发送的数据量。接收方根据自身处理能力和可用缓冲区大小来设置窗口大小,发送方根据接收方窗口大小来调整发送速率,以避免数据的拥塞和丢失。

拥塞控制机制:

  • TCP使用拥塞控制机制来适应网络拥塞情况。通过动态调整发送速率和窗口大小,TCP可以避免网络拥塞并提供公平共享带宽。TCP使用拥塞窗口和慢启动、拥塞避免、快速重传、快速恢复等算法来控制拥塞,并根据网络状况进行自适应调整。

数据校验和错误检测:

  • TCP使用校验和字段来检测数据在传输过程中的错误。接收方在接收到TCP报文后计算校验和,如果校验和不匹配,则认为数据出现错误,并请求发送方重新发送数据

3.说说TCP三次握手的过程。⭐⭐⭐⭐

TCP三次握手是建立TCP连接的过程,步骤如下:

  1. 第一次握手(SYN):客户端向服务器发送一个包含SYN(同步序列号)标志的报文段。这表示客户端请求建立连接,并指定初始序列号(初始的随机值)。

剩余60%内容,订阅专栏后可继续查看/也可单篇购买

c++/嵌入式面经专栏 文章被收录于专栏

本人2022年毕业于山东大学,目前就职intel。打算把之前校招时做的笔记通过专栏发出来,本专栏适合于C/C++、嵌入式方向就业的同学,本篇面经总结数千篇面经的知识集合,实时更新全网最新的嵌入式/C++最新内容,囊括了C语言、C++、操作系统、计算机网络、嵌入式、算法与数据结构、数据库等一系列知识点,在我看来这些是求职者在面试中必须掌握的知识点。最后呢祝各位能找到自己合适的工作。

全部评论
老哥,还要收费的呀
点赞 回复 分享
发布于 2023-11-01 10:13 山西

相关推荐

头像
09-29 16:18
门头沟学院 Java
点赞 评论 收藏
分享
10-18 13:01
已编辑
西安理工大学 C++
小米内推大使:建议技能还是放上面吧,hr和技术面试官第一眼想看的应该是技能点和他们岗位是否匹配
点赞 评论 收藏
分享
3 20 评论
分享
牛客网
牛客企业服务