TCP/IP那些你需要掌握的知识
什么是TCP/IP?
TCP/IP协议模型(Transmission Control Protocol/Internet Protocol),包含了一系列构成互联网基础的网络协议,是Internet的核心协议。并不只有TCP与IP两种协议,而是一个应用于不同网络间信息传输的协议簇,它对网络中各结构层次的通信制定了标准和方法。TCP/IP包含了很多协议,常见的协议包括IP、FTP、TCP、UDP、SMTP等。
OSI七层模型和TCP/IP 四模型
OSI七层模型:开放系统互连参考模型 (Open System Interconnect 简称OSI)是国际标准化组织(ISO)和国际电报电话咨询委员会(CCITT) 联合制定的开放系统互连参考模型,为开放式互连信息系统提供了一种功能结构的框架。
- 应用层: 网络服务与最终用户的一个接口,常见的协议有:HTTP FTP SMTP SNMP DNS.
- 表示层: 数据的表示、安全、压缩。,确保一个系统的应用层所发送的 信息可以被另一个系统的应用层读取。
-
会话层: 建立、管理、终止会话,对应主机进程,指本地主机与远程主机 正在进行的会话.
-
传输层: 定义传输数据的协议端口号,以及流控和差错校验,协议有 TCP UDP.
-
网络层: 进行逻辑地址寻址,实现不同网络之间的路径选择,协议有 ICMP IGMP IP 等.
-
数据链路层: 在物理层提供比特流服务的基础上,建立相邻结点之间的 数据链路。
-
物理层: 建立、维护、断开物理连接。
TCP/IP总共你四层,OSI的应用层,表示层,会话层对应了TCP/IP的应用层,OSI的数据链路层,物理层对应了TCP/IP的最下面的网络接口层。
TCP 是如何确保可靠性的
TCP 是可靠的连接,它是如何在不稳定的网络中可靠性呢?
通过三次握手,四次挥手来保证连接和断开的可靠性、是否有状态(哪些数据发送了,哪些没发)、可控制(超时重传、流量控制、拥塞控制等)。
一个 TCP 连接的生命周期
- 首先,TCP的连接是基于三次握手,而断开则是基于四次挥手,确保连接和断开的可靠性。
- 其次,TCP的可靠性,还体现在有状态,TCP会在内核中维护一些数据结构来记录哪些数据发送了,哪些数据被接收了,哪些没有被接受,并且保证数据包按序到达,保证数据传输不出差错。
- TCP 的可靠性,还体现在可控制。它有数据包校验、ACK 应答、超时重传(发送方)、失序数据重传(接收方)、丢弃重复数据、流量控制(滑动窗口)和拥塞控制等机制。
TCP 报文首部有哪些字段,其作用又分别是什么?
TCP头部
- 16位端口号: 源端口号,主机该报文段是来自哪里。
- 目标端口号,要传给哪个上层协议或应用程序。
- 32位序号: 一次 TCP 通信(从 TCP 连接建立到断开)过程中某一个传输方向上的 字节流的每个字节的编号。
- 32位确认号: 用作对另一方发送的 tcp 报文段的响应。其值是收到的 TCP 报文段 的序号值加 1。
- 4 位头部长度: 表示 tcp 头部有多少个 32bit 字(4 字节)。因为 4 位最大能标识 15,所以 TCP 头部最长是 60 字节。
- 6 位标志位: URG(紧急指针是否有效),ACk(表示确认号是否有效),PSH(缓冲区尚未填满),RST(表示要求对方重新建立连接),SYN(建立连接消息标志 接),FIN(表示告知对方本端要关闭连接了)。
- 16 位窗口大小: 是TCP 流量控制的一个手段。这里说的窗口,指的是接收通告窗口。它告诉对方本端的 TCP 接收缓冲区还能容纳多少字节的数据,这样对方就可 以控制发送数据的速度。
- 16 位校验和: 由发送端填充,接收端对 TCP 报文段执行 CRC 算法以检验 TCP 报 文段在传输过程中是否损坏。注意,这个校验不仅包括 TCP 头部,也包括数据部 分。这也是 TCP 可靠传输的一个重要保障。
- 16 位紧急指针: 一个正的偏移量。它和序号字段的值相加表示最后一个紧急数据 的下一字节的序号。因此,确切地说,这个字段是紧急指针相对当前序号的偏移, 不妨称之为紧急偏移。TCP 的紧急指针是发送端向接收端发送紧急数据的方法。
TCP和UDP的区别
- TCP 面向连接(如打电话需要先拨号),UDP面向无连接(即发送数据前不需要建立连接)。
- TCP 提供可靠的服务,而UDP则无法保证。
- TCP 面向字节流,而 UDP 面向报文。
- TCP 数据传输慢,比如需要慢启动,UDP数据传输快,啥都不管直接就传。
- TCP 是点对点连接的,UDP可以一对一,一对多,多对多都可以,所以组播,广播基本都用UDP协议。
- TCP 适用于邮件、网页等,UDP 适用于语音,直播等场景。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· 震惊!C++程序真的从main开始吗?99%的程序员都答错了
· 【硬核科普】Trae如何「偷看」你的代码?零基础破解AI编程运行原理
· 单元测试从入门到精通
· 上周热点回顾(3.3-3.9)
· winform 绘制太阳,地球,月球 运作规律