网络基础 TCP/IP协议面试常问知识点

****************** 如有侵权请提示删除 *********************

1、网络包的组成:
报头/起始帧分界符——MAC头部——IP头部——TCP头部——数据——FCS(帧校验序列)

2、TCP头部由TCP模块负责添加,头部格式如下:(最小20字节)
发送方端口号
接收方端口号
序号(发送数据的顺序编号):发送方告诉接收方该网络包发送的数据相当于所有发送数据的第几个字节。
ACK号(接收数据的顺序编号)
数据偏移量
保留
控制位:
URG:表示紧急指针字段有效
ACK:表示接收数据序号字段有效
PSH:表示通过flush操作发送的数据
RST:强制断开连接,用于异常中断的情况
SYN:发送方和接受方相互确认序号,表示连接操作
FIN:表示断开连接
窗口:接收方告知发送方窗口的大小(即无需等待确认认可一起发送的数据量)
校验和
紧急指针
可选字段

3、IP头部和MAC头部由IP模块负责添加。
IP头部:IP用的头部,包含IP头部
MAC头部:以太网的头部,包含MAC地址
IP头部格式如下:
版本号
头部长度
服务类型
总长度:表示IP消息的总长度
ID号:用于识别包的编号,一般为包的序列号。如果一个包被IP分片,则所有的分片都拥有相同的ID
标志:该字段有3个比特,有效的是前两个比特。分别表示是否允许分片,当前包是否是分片包
分片偏移量
生存时间
协议号:十六进制表示,TCP:06 UDP:11 ICMP:01
头部校验和
发送方IP地址
接收方IP地址
可选字段

MAC头部的格式如下:
接收方MAC地址(48比特,5字节)
发送方MAC地址
以太类型:使用的协议类型0000-05DC:IEEE802.3 0800:IP协议 0806:ARP协议 86DD:IPV6

4、数据包分片、重组操作:
(1)发送方:
将数据包分为多个TCP头部+数据包的组合,TCP头部中存着不同的数据序号;之后将多个组合交由IP模块,统一添加IP头部和MAC头部,IP头部的ID号设为统一的。
(2)接收方:
IP模块具有分片重组的功能,如果接收到的包是进过分片的,那么IP模块会将它们还原成原始的包。分片的包会在IP头部的标志字段中进行标记,当收到分片的包时,IP模块会将其暂时存在内部的内存空间中,然后等待IP头部中具有相同ID的包全部到达,因为同一个包的所有分片都具有相同的ID。此外,IP头部还有一个分片偏移量的字段,它表示当前分片在整个包中所处的位置。根据这些信息,在所有的分片全部收到之后,就可以将它们还原成原始的包。

5、滑动窗口机制:
所谓滑动窗口,就是在发送一个包之后,不等待ACK号的返回,直接发送后续的一系列包。有效利用等待ACK号的这段时间。
窗口大小:能够接收的最大数据量。
注意接收缓冲区的概念、TCP头部中的滑动窗口字段的使用(三次握手时传递互相的窗口大小,并且中途还会更新大小)

6、IP头部的两个IP地址分别为:发送方网卡的IP地址;应用程序提供的接收方IP地址。
MAC头部的发送方和接受方的MAC地址分别是发送方网卡的MAC地址;利用ARP(地址解析协议)协议,根据接收方IP地址广播得到的接收方MAC地址。
注意:ARP缓存概念。

7、ICMP协议:
ICMP是(Internet Control Message Protocol)Internet控制报文协议。它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。控制消息是指网络通不通、主机是否可达、路由是否可用等网络本身的消息。这些控制消息虽然并不传输用户数据,但是对于用户数据的传递起着重要的作用。 ICMP协议是一种面向无连接的协议,用于传输出错报告控制信息。

8、UDP传输协议:
UDP协议使用的具体案例:
向DNS服务器查询IP地址的时候就是使用的UDP协议。
发送音频和视频数据。

      像DNS查询等交换控制信息的操作基本上都可以在一个包的大小范围内解决,这种场景下就可以使用UDP协议传输。UDP协议没有TCP的接收确认、窗口机制。在收发数据前不需要交换控制信息,也就是说不需要建立和断开连接。

UDP头部的格式如下:(8字节)
发送方端口号
接收方端口号
数据长度:UDP头部后面数据的长度
校验和:用于校验错误

      发送数据:从应用程序获取的数据前面加上UDP头部,然后交给IP进行发送就OK了。接收数据:根据IP头部中的接收方和发送方IP地址,以及UDP头部中的接收方和发送方的端口号,找到对应的套接字并将数据交给相应的应用程序就OK了。

9、TCP与UDP的区别: (转载)
1、基于连接与无连接;
2、对系统资源的要求(TCP较多,UDP少);
3、UDP程序结构较简单;
4、流模式与数据报模式 ;
5、TCP保证数据正确性,UDP可能丢包,TCP保证数据顺序,UDP不保证。

10、TCP与UDP的区别:
(1)回答发送数据前是否存在建立连接的过程。
(2)TCP过确认机制,丢包可以重发,保证数据的正确性;UDP不保证正确性,只是单纯的负责发送数据包。
(3) UDP是面向报文的。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付给IP层。既不拆分,也不合并,而是保留这些报文的边界,因    此,应用程序需要选择合适的报文大小。
   (4)UDP的头部,只有8个字节,相对于TCP头部的20个字节信息包的额外开销很小。

参考:TCP/IP协议面试常问知识点,倾心总结_冷血之心的博客-CSDN博客_面试官问道的7tcp/ip

网络基础 TCP/IP协议面试常问知识点相关推荐

  1. (chap1 web网络基础) TCP/IP协议层

    1. HTTP( HyperText Transfer Protocol) 超文本传输协议 2. TCP/IP协议层 应用层 应用层决定了向用户提供应用服务时通信的活动. TCP/P协议族内预存了各类 ...

  2. 网络基础网络层--IP协议

    网络基础网络层--IP协议 一.IP协议解析 (一)4位版本 (二)4位报头长度 (三)8位服务类型 (四)16位数据报长度 (五)16位分片标识 (六)3位分片标志 (七)13位分片偏移 (八)8位 ...

  3. WinSock API网络编程——TCP/IP协议详解

     WinSock API网络编程--TCP/IP协议(http://www.impcas.ac.cn/usr/lujun/browse.asp?id=winsock_tcp)            ...

  4. Java中的网络和TCP/IP协议

    网络和TCP/IP协议 一.网络通信协议 1.1 协议和七层模型 1.2 TCP/IP协议 二.网络通信的实现 2.1 TCP协议通信 2.2 UDP协议通信 前言: 有时候我们会不理解,我们在QQ上 ...

  5. 编写tcp服务器发送hex格式_Android网络编程-TCP/IP协议

    在Android网络编程-计算机网络基础一文中得知,IP协议属于网络层,TCP.UDP协议属于传输层. IP协议是TCP/IP协议族的动力,它为上层协议提供无状态.无连接.不可靠的服务. TCP协议是 ...

  6. 网络编程--TCP/IP协议

    参考:https://lijie.blog.csdn.net/article/details/105297532 https://blog.csdn.net/qq_20785973/article/d ...

  7. TCP/IP协议面试常见题目

    TCP/IP 1. OSI与TCP/IP各层的结构与功能,都有哪些协议. 2. TCP与UDP的区别. 3. TCP报文结构. 4. TCP的三次握手与四次挥手过程,各个状态名称与含义,TIMEWAI ...

  8. 测试岗位面试常问知识点(偏HR)

    面试常问 视情况回答 1.一个优秀的测试工程师应该具备什么品质? 2.为什么想做测试相关的工作? 对测试感兴趣,性格适合(细心.耐心等),测试人员是质量的保证者,喜欢挑战.展开分析. 3.测试开发与测 ...

  9. c++ 常见基础知识以及面试常问知识点

    这些都是本人平时积累的知识点,比较杂也比较基础.但是对于常见C++面试,应该会有很大帮助 (本人做qt等客户端开发) 常见面试题:https://segmentfault.com/a/11900000 ...

最新文章

  1. 三亚免税店积分抵现_又变了??三亚免税店的政策又变了~
  2. LabVIEW色彩定位实现药品包装质量检测(实战篇—4)
  3. python中Scipy模块求取积分
  4. 数据分析不落地?典型案例教会你!
  5. java面试 数据库连接池_阿里面试官:数据库连接池有必要吗?你对它的底层实现了解过没?...
  6. AUCAD自定义[2006.9.22]
  7. nero10 序列号
  8. UE4.27 Live Link Face无法连接的一种解决办法
  9. 人工智能各层思维导图
  10. win10系统bug:开机自动打开空白word文档
  11. c语言字符串求n的阶乘,C语言求n的阶乘(n!)
  12. Canvas 图片加载
  13. python实现播放音乐
  14. 去哪家期货公司如何开户?
  15. Spark SQL架构工作原理及流程解析
  16. Java毕设项目阿博图书馆管理系统(java+VUE+Mybatis+Maven+Mysql)
  17. 操作系统:动态内存分区分配算法实现(C++)
  18. java joda time api_好用java库(一):java date/time api:joda-time
  19. react-navigation Navigation使用
  20. Linux网络设备驱动-以太网驱动分析

热门文章

  1. iOS 12系统安装教程:开发者预览版抢先体验
  2. 基坑 matlab,基于目标函数MATLAB优化基坑降水的井群设计
  3. php语言编写一个下载器,PHP实现音乐搜索下载器
  4. 杰里之ANC 参数配置说明【篇】
  5. js中进入页面后刷新一次,且只刷新一次
  6. 三次更名、融资七轮后,这家公司能否挽回它错失的那些年?
  7. 谋势、聚力、强生态,用友三十而立
  8. 【EI会议推荐】第三届机器学习与智能系统工程国际学术会议(MLISE 2023)
  9. springBoot报 :Address already in use: bind错误
  10. word转pdf图片问题