1.TCP/IP网络模型

发布时间 2023-06-17 16:56:10作者: 求知律己

1.四层TCP/IP网络模型

1.1 为什么要有TCP/IP网络模型

  对于同一设备间的进程通信,可以通过管道、消息队列、共享内存、信号等方式进行通信;在Java中的线程通信中,可以使用管道流(字节流(PipedInputStream、PipedInputStream)、字符流(PipedReader、PipedWriter))、共享内存(volatitle)、消息传递(wait/notify,join)等方式进行通信。对于不同设备商的进程间通信需要网络通信,而设备多样化,因此为兼容多样化设备,就协商出一套通用网络协议进行不同设备间的进程间通信。网络协议是分层结构的,每一层都有其各自的作用和职责。

1.2 应用层

  TCP/IP网络模型中最上层的网络就是应用层(Application Layer),我们电脑或手机使用的应用软件九十九与应用层实现的。当两个不同设备的应用进行通信时,应用层把应用层数据传输给下一层的传输层应用层只需要专注于为用户提供应用功能,即HTTP、FTP、TELNET、DNS、SMTP等协议

  应用层不需要关注数据如何传输。应用层工作在操作系统的用户态,传输层及以下网络层工作在操作系统的内核态

1.3 传输层

  在传输层中有两个传输协议,分别是面向连接的可靠性协议TCP协议和无连接的不可靠协议UDP协议。TCP(传输控制协议(Transmission Controller Protocol))帮助很多应用层传输信息,如HTTP。TCP相对于UDP多了流量控制、超时重传、拥塞控制等特性,这些都是为了保证数据包可靠地传输给其他应用。UDP相对于TCP更加简捷,它只负责发送数据包,不保证数据包是否能抵达其他应用,但它相对与TCP实时性更好,传输效率也更高。其实UDP结合HTTP/3的QUIC协议也可以实现可靠传输,只不过现在还没有研究出好的方案。

  当应用传输的数据非常大时,直接传输不好控制。当传输层的数据大小超过MSS(TCP最大报文段长度),就要将数据分段。分段后,及时一个分块丢失或损坏,只需要重新发送这一个分块即可,而不需要发送整个数据包。在TCP协议中,我们把每个分块称为一个TCPP段(TCP Segment)。结构如下图所示:

   当设备作为接收方时,传输层负责将数据包传给应用,但一台设备可能会有多个应用在接收或传输数据,因此需要端口来区分应用层。由于传输层的报文会携带端口号,因此接收方可以通过传输层的端口识别出报文发送给哪个应用。

 1.4 网络层

  每一层网络模型都有各自的任务和功能,传输层只需要服务好应用层即可。而网络层的职责就是作为应用层的数据传输媒介,实现应用到应用的通信,真正实现传输功能。

2.参考博客

  本人博客内容是基于小林coding的计算机网络写的,中间省略了部分内容,大家可以去小林coding博客看更详细的图解网络,链接为:小林coding (xiaolincoding.com)