🧑💻1 TCP/IP协议详解
type
status
date
slug
summary
tags
category
icon
password
1.请写出几个常用的应用层的协议并标明其基于的传输层协议及端口号。
基于TCP的协议:
- HTTP (超文本传输协议)
- 端口号: 80
- 解释: 用于在万维网上传输网页数据的协议,用户通过浏览器访问网页时使用。
- HTTPS (安全超文本传输协议)
- 端口号: 443
- 解释: HTTP的加密版本,通过SSL/TLS协议确保数据传输的安全性。
- FTP (文件传输协议)
- 端口号: 21 (控制连接) / 20 (数据连接,主动模式)
- 解释: 用于在网络上进行文件的上传和下载,支持用户身份验证。
- SSH (安全Shell协议)
- 端口号: 22
- 解释: TELNET的安全替代方案,提供加密的远程登录会话。
- Telnet (远程终端协议)
- 端口号: 23
- 解释: 用于远程登录到另一台计算机的协议,通常用于管理和配置服务器,传输内容为明文。
- SMTP (简单邮件传输协议)
- 端口号: 25
- 解释: 用于在电子邮件服务器之间传输邮件的协议,主要用于发送邮件。
- POP3 (邮局协议第三版)
- 端口号: 110
- 解释: 用于从邮件服务器上下载邮件到本地的协议,通常下载后邮件会从服务器删除。
- IMAP (互联网消息访问协议)
- 端口号: 143
- 解释: 与POP3类似,但支持在服务器上管理和同步邮件,不会自动删除服务器上的邮件。
基于UDP的协议:
- DNS (域名解析协议)
- 端口号: 53
- 解释: 将域名转换为IP地址的协议,允许用户通过域名访问网络资源。虽然通常使用UDP,但在某些情况下也可能使用TCP。
- DHCP (动态主机配置协议)
- 端口号: 67 (服务器端) / 68 (客户端)
- 解释: 自动分配IP地址和网络配置信息给客户端设备的协议,使得设备能够自动加入网络。
- TFTP (简单文件传输协议)
- 端口号: 69
- 解释: 一种简化版的FTP协议,用于在网络设备间快速传输小文件,通常用于设备的引导和配置,缺少身份验证功能。
- SNMP (简单网络管理协议)
- 端口号: 161
- 解释: 用于网络管理的协议,网络设备通过它发送状态信息和接收配置指令。
- NTP (网络时间协议)
- 端口号: 123
- 解释: 用于同步网络设备时间的协议,确保所有设备在网络中拥有统一的时间标准。
2.TCP报文头部中,哪些字段与建立连接和断开连接有关请写出来,并标明每个字段的作用。
序列号(Sequence Number, SEQ)
- 作用: 表示发送数据包的序列号,用于保证数据包的顺序和完整性。连接建立时,客户端发送一个初始序列号(ISN),服务器在响应时也会生成一个自己的ISN。
确认号(Acknowledgment Number, ACK)
- 作用: 表示接收方期望下一个收到的数据包的序列号,用于确认已成功接收到的数据包。在连接建立时,用于确认对方的序列号,从而完成三次握手。
控制位(Control Bits)
- SYN (Synchronize):
- 作用: 用于建立TCP连接,表示请求建立连接。在三次握手中,客户端和服务器通过设置SYN位来同步序列号。
- ACK (Acknowledgment):
- 作用: 用于确认已经接收到数据包或连接请求。在连接建立、数据传输以及连接终止过程中,接收方都会使用ACK位来确认已收到的数据。
- FIN (Finish):
- 作用: 表示发送方完成了数据发送,并请求关闭连接。在四次挥手中,FIN位用于双方确认结束数据传输
- RST (Reset):
- 作用: 用于强制重置连接,通常在连接出现异常或错误时使用。发送RST报文会立即断开连接。
- PSH (Push):
- 作用: 表示推送数据,要求接收方立即将数据提交给应用程序,而不是在缓冲区中等待。
- URG (Urgent):
- 作用: 表示紧急数据,要求接收方优先处理。紧急指针字段会指示紧急数据的结束位置。
- ECE (ECN-Echo):
- 作用: 与显式拥塞通知(ECN)配合使用,表明发送方已收到标记为ECN的报文,用于拥塞控制。
- CWR (Congestion Window Reduced):
- 作用: 由发送方设置,用于通知对方它已减少了拥塞窗口,以响应收到的ECE标志。
3.请简单描述TCP断开连接的过程。
TCP断开连接的过程(四次挥手):
第一次挥手(客户端发起关闭):
- 客户端发送一个带有FIN标志的报文,表示希望关闭连接。这个报文的序列号(
SEQ
)是客户端在数据传输过程中使用的序列号。状态:
- 此时客户端进入FIN_WAIT_1状态,等待服务器的确认。
第二次挥手(服务器确认关闭请求):
- 服务器收到客户端的FIN后,发送一个带有ACK标志的报文,确认已经收到客户端的关闭请求。这个报文的确认号(
ACK
)是客户端FIN报文的序列号加1。状态:
- 此时服务器进入CLOSE_WAIT状态,表示它准备关闭连接。
- 客户端收到ACK后,进入FIN_WAIT_2状态,等待服务器的FIN报文。
第三次挥手(服务器发起关闭):
- 服务器在确认客户端的关闭请求后,发送一个带有FIN标志的报文,表示服务器也要关闭连接。此时,服务器使用自己的序列号(
SEQ
),但确认号(ACK
)仍然是第二次挥手时的确认号,即客户端的序列号加1状态:
- 此时服务器进入LAST_ACK状态,等待客户端的确认。
- 客户端继续处于FIN_WAIT_2状态。
第四次挥手(客户端确认服务器关闭请求):
- 客户端收到服务器的FIN后,发送一个带有ACK标志的报文,确认服务器的关闭请求。这个ACK报文的序列号是服务器FIN报文确认号,确认号是服务器FIN报文的序列号加1。确保所有数据都被正确接收后,然后关闭连接。
状态:
- 此时客户端进入TIME_WAIT状态,等待一段时间后彻底关闭连接。
- 服务器收到ACK后进入CLOSED状态,连接正式关闭。
4.在TCP头部字段中,窗口的大小由谁来决定。
在TCP通信中,窗口大小(Window Size)字段由接收方来决定。
这个字段表示接收方当前愿意接收的数据量,即接收方的接收缓冲区中还有多少空间可用。
详细解释:
- 窗口大小字段位于TCP报文头部,用于流量控制。它指定了发送方可以发送的、未被确认的数据量上限。
- 当接收方在发送ACK报文时,会在其TCP头部的窗口大小字段中设置一个数值,告知发送方当前接收缓冲区的剩余容量。
- 发送方根据这个窗口大小决定接下来可以发送的数据量,从而避免发送的数据超过接收方的处理能力,防止缓冲区溢出。
动态调整:
- 窗口大小是动态调整的,随着数据的接收和处理而变化。如果接收方的缓冲区快满了,它会通过窗口大小字段通知发送方减少发送数据的速率。相反,当缓冲区有更多空间时,窗口大小会增大,允许发送方发送更多数据。
示例:
- 如果接收方的窗口大小字段设置为
5000
,这意味着发送方可以发送最多5000字节的未确认数据。
- 发送方每发送一段数据并收到ACK后,接收方会更新窗口大小,以反映当前的缓冲区状况。
因此,TCP窗口大小由接收方决定,它直接影响了发送方的数据发送速率,是TCP流量控制的关键机制之一。
5.请简单描述TCP与UDP的区别。
TCP和UDP的区别主要在于以下几点:
- 连接方式:
- TCP:面向连接,发送前要建立连接。
- UDP:无连接,直接发送数据。
- 可靠性:
- TCP:可靠,保证数据不丢失、顺序到达。
- UDP:不可靠,数据可能丢失或乱序。
- 速度:
- TCP:较慢,有连接和确认过程。
- UDP:较快,没有连接和确认过程。
- 应用场景:
- TCP:用于需要可靠传输的场景,如网页、文件传输。
- UDP:用于对速度要求高的场景,如视频直播、游戏。
- 报文结构:
- TCP:头部较复杂,包含序列号、确认号、窗口大小等字段。
- UDP:头部简单,仅包含源端口、目的端口、长度和校验和字段。
详细解释:
1. 连接方式:
- TCP:面向连接的协议。通信前需要建立连接(三次握手),通信结束时需要断开连接(四次挥手)。
- UDP:无连接的协议。通信前不需要建立连接,直接发送数据。
2. 可靠性:
- TCP:提供可靠的数据传输。通过序列号、确认应答(ACK)、超时重传和流量控制等机制,确保数据的完整性和顺序到达。
- UDP:不保证数据的可靠性。数据可能丢失、重复或乱序到达,发送后不确认。
3. 速度:
- TCP:由于需要建立连接并保证可靠性,数据传输速度相对较慢。
- UDP:传输速度快,没有建立连接的开销,也没有复杂的错误检查机制。
4. 应用场景:
- TCP:适用于需要可靠传输的应用,如网页浏览(HTTP/HTTPS)、文件传输(FTP)、电子邮件(SMTP)。
- UDP:适用于对速度要求高且可以容忍数据丢失的应用,如视频直播、在线游戏、DNS查询。
5. 报文结构:
- TCP:头部较复杂,包含序列号、确认号、窗口大小等字段。
- UDP:头部简单,仅包含源端口、目的端口、长度和校验和字段。
总结:
- TCP重可靠性和顺序性,适用于要求数据准确无误传输的场景。
- UDP重速度和效率,适用于可以容忍部分数据丢失的场景。
6.请写出IP头部字段中每个字段的名称及其大致的作用。
- 版本(Version)占4位:
- 指示IP协议的版本。IPv4头部的版本字段值为4。
- 头部长度(IHL,Internet Header Length)占4位:
- 表示IP头部的长度,以32位(4字节)为单位。该字段指示数据部分相对于IP包的起始位置。
- 服务类型(Type of Service,ToS)占8位:
- 用于指定数据包的优先级和服务质量,帮助路由器决定如何处理该数据包。
- 总长度(Total Length)占16位:
- 表示整个IP数据包(包括头部和数据部分)的总长度,以字节为单位。
- 标识(Identification)占16位:
- 标识不同的IP报文,同一IP报文的所有分片具有相同的标识符
- 标志(Flags)占3位:
- 用于分片标志,控制和标记数据包分片的情况。包括DF(Don't Fragment,不分片)和MF(More Fragments,有更多片段)等标志。DF=1表示不允许分片,DF=0表示允许分片;MF=1表示后面还有分片,MF=0表示这是最后一个分片
- 片偏移(Fragment Offset)占13位:
- 用于标识分片数据在原始数据包中的相对位置,确保接收方能正确重组数据包。
- 生存时间(Time to Live,TTL)占8位:
- 表示数据包在网络中的最大跳数。每经过一个路由器,TTL值减1,当TTL为0时,数据包被丢弃,防止网络中出现无限循环。
- 协议(Protocol)占8位:
- 指示IP数据包中所承载的上层协议类型,例如TCP(值为6)或UDP(值为17)。
- 头部校验和(Header Checksum)占16位:
- 用于校验IP头部的完整性,确保数据在传输中未被损坏。
- 源地址(Source Address)占32位:
- 表示发送该数据包的主机的IP地址。
- 目的地址(Destination Address)占32位:
- 表示接收该数据包的主机的IP地址。
- 选项(Options)(可选字段):
- 长度可变,用于支持测试、调试和网络管理等功能,不常用。
7.ICMP、TCP、UDP分别对应的网络层的协议号分别是多少?
- ICMP(Internet Control Message Protocol):协议号为 1。
- TCP(Transmission Control Protocol):协议号为 6。
- UDP(User Datagram Protocol):协议号为 17。
8.请简述一下tracert的大致工作原理。
- 发送初始包:源主机首先发送三个TTL=1的包。
- 路由器处理:第一个路由器收到后,TTL值减1,变为0后丢弃包,并返回一个ICMP超时消息。
- 显示信息:源主机收到超时消息,显示路由器信息,然后发送下一组三个包,TTL值比上一组增加1。
- 逐跳递增:每经过一个路由器,TTL增加1,直到包到达目标主机。
- 程序终止:目标主机回复应答消息,
tracert
程序终止。
- 丢包显示:若包丢失,则显示为 *
号。
9.tracert与traceroute的区别是什么。
tracert
:Windows工具,使用ICMP。探测到目的主机是否可达
traceroute
:Unix/Linux工具,默认使用UDP,也支持ICMP或TCP。探测到目的主机的某项服务是否可达
10.常用的故障诊断命令有哪些。
在网络故障诊断过程中,以下是一些常用的命令,这些命令可用于检测网络连接、路由路径、DNS解析、端口连通性等问题:
1. ping
- 用途:测试与目标主机的网络连通性,以及延迟(响应时间)。
- 示例:
ping www.google.com
- 说明:连续发送ICMP回显请求包到目标主机,并显示每个包的往返时间。如果出现丢包或延迟过高,可能存在网络连接问题。
2. tracert (Windows) / traceroute (Linux/Unix)
- 用途:跟踪数据包到目标主机的路径,并显示经过的每个路由节点。
- 示例:
- Windows:
tracert www.google.com
- Linux/Unix:
traceroute www.google.com
- 说明:可以帮助识别网络中的瓶颈或中断点。
3. nslookup / dig
- 用途:DNS查询工具,用于解析域名到IP地址。
- 示例:
nslookup www.google.com
dig www.google.com
(Linux/Unix)
- 说明:如果DNS解析失败,可能导致无法访问网站。
nslookup
和dig
可以检查域名是否正确解析。
4. netstat
- 用途:显示当前网络连接、监听端口、路由表和网络接口的状态。
- 示例:
netstat -an
- 说明:可以用来检查有哪些端口正在被监听,是否有不正常的网络连接,以及检查本地与远程主机之间的连接状态。
5. ipconfig (Windows) / ifconfig 或 ip a (Linux/Unix)
- 用途:查看和管理网络适配器的IP配置。
- 示例:
- Windows:
ipconfig /all
- Linux/Unix:
ifconfig
或ip a
- 说明:用于检查IP地址、子网掩码、网关和DNS服务器配置,排查网络配置错误。
6. arp
- 用途:查看和修改本地主机的ARP缓存表。
- 示例:
arp -a
- 说明:可以用来检查本地机器对特定IP地址的MAC地址解析,排查与ARP相关的问题。
7. tcpdump (Linux/Unix) / Wireshark (图形界面)
- 用途:抓包工具,用于捕获和分析网络流量。
- 示例:
tcpdump -i eth0
- 说明:强大的网络分析工具,可以检查网络流量中的异常数据包,适合深入分析网络问题。
8. telnet / nc (netcat)
- 用途:测试远程主机的端口连通性。
- 示例:
telnet www.google.com 80
nc -zv www.google.com 80
(Linux/Unix)
- 说明:可以用来测试远程服务器的特定端口是否开放和可达。
9. route
- 用途:查看和修改路由表。
- 示例:
- Windows:
route print
- Linux/Unix:
route -n
- 说明:用于检查和修改系统的路由表,排查网络流量路由问题。
10. mtr (My Traceroute)
- 用途:结合
ping
和traceroute
的功能,持续检测路径和每一跳的延迟与丢包情况。
- 示例:
mtr www.google.com
- 说明:实时动态显示网络路径的状态,适合持续监控网络质量。
11. curl / wget
- 用途:测试和诊断HTTP/HTTPS请求,检查网页是否可访问。
- 示例:
curl -I <http://www.google.com
>wget <http://www.google.com
> (Linux/Unix)
- 说明:可以用来测试网络连接是否正常,以及服务器响应的HTTP状态码。
12. nmap
- 用途:网络扫描工具,用于端口扫描和主机探测。
- 示例:
nmap -sP 192.168.1.0/24
- 说明:可以用来扫描网络中的活动设备,检查主机开放的端口,以及检测可能的安全漏洞。
这些命令是网络故障排查中的常见工具,掌握并灵活运用它们可以帮助快速定位和解决网络问题。
11.请简单描述单核心三层结构的数据通信流程。
主机发现访问的是域名而不是ip地址 于是向dns服务器查询ip地址
首先判断dns服务器和自己是否在同一网段,不在——查看主机arp表是否有网关mac地址
没有——发arp请求获得网关地址 然后再通过网关发送数据包给dns服务器
dns服务器响应后 返回域名对应的ip地址
然后根据ip地址封装数据包进行请求访问。
一、网络模型
1.TCP/IP、OSI模型每一层和名字
2.对应关系
3.每一层大概有什么重要的协议
4.对等通信
相同层相同协议之间按照相同的协议交换报文
5.通信的过程中封装,每一层的叫法(比特、帧、包、段)
二、TCP/IP协议族
TCP、UDP头部封装内容
下层对上层提供服务
上一篇
DHCP服务搭建
下一篇
2 OSPF基础
Loading...