- (꒪ꇴ꒪ ),Hello我是祐言QAQ
- 我的博客主页:C/C++语言,数据结构,Linux基础,ARM开发板,网络编程等领域UP🌍
- 快上🚘,一起学习,让我们成为一个强大的攻城狮!
- 送给自己和读者的一句鸡汤🤔:集中起来的意志可以击穿顽石!
- 作者水平很有限,如果发现错误,请在评论区指正,感谢🙏
引言
在当今数字化世界中,网络是不可或缺的一部分。本博客将深入探讨TCP/IP协议以及与网络相关的基础概念,帮助初学者理解网络通信的核心原理。
一、TCP/IP协议的产生
1.1 介绍TCP/IP协议的历史和背景
TCP/IP协议,全名为传输控制协议/因特网协议(Transmission Control Protocol/Internet Protocol),诞生于20世纪70年代,是因特网的基石之一。它的发展大致分为以下五个部分:
(1)ARPANET的起源:
TCP/IP协议最早的雏形可以追溯到美国国防部高级研究计划局(DARPA)的ARPANET项目。ARPANET是一个早期的计算机网络,但有个缺点,无法在不同类型的PC端传递。为了打破这种局限,一种能够在不同计算机之间传输数据的协议,于是TCP/IP协议被提出。
(2)分层结构的设计:
TCP/IP协议是一个分层协议,由多个层次组成,每个层次负责不同的功能。其中,TCP(传输控制协议)和IP(Internet协议)是两个核心的协议。TCP负责可靠的数据传输,而IP则负责数据的路由和分发。这种分层结构使得协议更加模块化和可扩展。
(3)1970年代的发展:
在上世纪70年代初期,TCP/IP协议的开发工作由一些杰出的计算机科学家和工程师共同进行,包括Vinton Cerf和Bob Kahn。他们的工作导致了TCP/IP协议套件的首次实现,这个套件包括了TCP、IP、UDP(用户数据报协议)等子协议。
(4)标准化和广泛应用:
随着时间的推移,TCP/IP协议经过标准化,并在不断扩展和改进。它被广泛采用,不仅用于ARPANET,还用于后来的互联网。1983年,互联网正式采用了TCP/IP作为其标准协议套件,这一决定为互联网的快速发展奠定了基础。
(5)互联网的崛起:
TCP/IP协议的广泛应用推动了互联网的崛起。互联网开始连接全球各地的计算机网络,使得信息和资源能够迅速传播和共享。这一过程导致了互联网的普及和快速发展,成为了现代社会中不可或缺的一部分。
1.2 TCP/IP协议的发展和重要性
TCP/IP协议的发展是互联网快速普及的关键因素之一。它的分层结构和可扩展性使其成为了全球互联网通信的核心。它的发展同时也塑造了互联网的现代形态,还为全球通信和技术创新提供了坚实的基础。它是计算机网络和通信领域的重要里程碑。
二、网络的体系结构
2.1 解释计算机网络的基本组成和层次结构
计算机网络通常包括硬件(例如路由器、交换机、电缆)和软件(网络协议、应用程序)。网络层次结构包括物理层、数据链路层、网络层、传输层、应用层。
2.2 详细说明计算机网络的基本组成和层次结构
2.2.1 基本组成
硬件:
路由器(Routers): 路由器是网络中的关键设备,用于在不同子网之间转发数据包,以实现跨网络通信。
交换机(Switches): 交换机是用于在局域网内交换数据帧的设备,通常用于连接局域网中的多台计算机。
物理介质: 电缆和物理介质如光纤、铜缆等用于数据传输的媒介。
网卡(Network Interface Cards): 网卡是计算机连接到网络的接口,负责将数据帧发送到网络中。
服务器和终端设备: 服务器提供网络服务,终端设备如电脑、手机等连接到网络以访问这些服务。
软件:
网络协议(Network Protocols): 网络协议是规定数据在网络中如何传输和交换的规则集合。例如,TCP/IP协议套件是互联网中最常用的网络协议。
应用程序(Applications): 应用程序允许用户与网络交互,包括浏览器、电子邮件客户端、文件传输工具等。
2.2.2 层次结构
计算机网络通常按照层次结构进行组织,以便将复杂的网络功能分解为不同的层次,每个层次负责特定的任务。这种层次结构通常被称为 OSI(开放式系统互连)模型,它包括七个层次,而TCP/IP模型是一种更常用的模型,它包括四个主要层次(合并而来)。
应用层(Application Layer): 应用层是用户与网络互动的层次,包括各种应用程序和协议,如HTTP、SMTP、FTP等。
表示层(Presentation Layer): 表示层主要负责数据的编码、加密和压缩,以确保数据在不同系统之间的互操作性。这一层次的协议处理数据格式、字符编码、数据加密和解密等任务。
会话层(Session Layer): 会话层用于建立、管理和终止网络中的会话或连接。它处理会话控制、同步和恢复等功能。这一层次的协议允许两个系统之间建立会话,以确保数据在传输过程中的正确顺序和完整性。
传输层(Transport Layer): 传输层提供端到端的数据传输,确保数据的可靠性和完整性。TCP(传输控制协议)和UDP(用户数据报协议)是常见的传输层协议。
网络层(Network Layer): 网络层负责在不同网络之间路由数据包。IP协议位于这一层,它负责寻址和路由数据。
数据链路层(Data Link Layer): 数据链路层负责在物理层之上建立直接的数据链路,确保数据可靠传输。它通常包括子层:MAC(媒体访问控制)和LLC(逻辑链路控制)。
物理层(Physical Layer): 物理层处理网络的硬件连接,包括传输媒体和数据的物理传输方式。它主要关注电压、信号等物理细节。
三、TCP/IP协议
3.1 详细介绍TCP/IP协议套件的组成
TCP/IP协议套件是一个广泛用于计算机网络通信的协议簇,它包括了多个协议,每个协议都有特定的功能和作用。
3.1.1 应用层协议
HTTP(超文本传输协议): HTTP是用于在客户端和服务器之间传输超文本文档的协议,是万维网的基本协议。它支持Web浏览器向Web服务器请求和接收HTML页面、图像、视频和其他资源。
HTTPS(HTTP + SSL/TLS): HTTPS是基于HTTP协议的安全版本,通过SSL/TLS加密通信,确保数据传输的安全性和机密性。它在敏感数据传输中广泛使用,如在线支付和登录。
Telnet: Telnet是一种用于远程登录到远程计算机的协议。它允许用户在本地计算机上通过终端访问远程计算机系统,执行命令和操作远程资源。
FTP(文件传输协议): FTP是用于在网络上传输文件的协议,支持文件上传、下载和管理。它通常用于网站维护和文件共享。
DNS(域名服务协议): DNS是用于将域名转换为IP地址的协议,它在互联网上解析域名并将用户请求路由到正确的服务器。它是互联网中的地址翻译器。
3.1.2 传输层协议
TCP(传输控制协议): TCP是一种可靠的、面向连接的协议,它确保数据可靠地传输,提供流量控制和拥塞控制。它用于应用程序之间的可靠数据传输,如Web浏览、电子邮件等。
UDP(用户数据报协议): UDP是一种无连接的协议,它提供了一种简单的数据传输机制,但不保证可靠性。它适用于需要低延迟的应用,如音频和视频流传输。
这里简单总结一下,提及TCP协议你一听停听过“三次握手”,正是这个机制决定了TCP的可靠性,但降低了速度,而UDP就像是一个叛逆期的小孩,无论何时发完就走,绝不回头,更适合于低延迟的应用,最常见的莫过于视频通话。
注:
(1) SYN : 建立连接;
(2) ACK : 表示响应、确认;
(3) PSH : 表示有数据传输。
3.1.3 网络层协议
IP(互联网协议): IP是互联网的基础协议,负责数据的路由和分发。它定义了一种统一的地址格式(IPv4或IPv6),以便在网络上唯一标识设备,使数据能够正确传递到目的地。
网络接口与物理层:
在TCP/IP协议套件中,网络接口与物理层通常不被视为协议,而是用于实际数据传输的硬件和物理介质,包括网卡、以太网电缆、光纤等。这些层次提供了数据的物理传输和电信号处理。
总之,TCP/IP协议套件的各个组成部分共同构成了互联网通信的基础,允许不同类型的设备和应用程序在全球范围内进行通信和数据交换。
3.2 解释TCP和UDP协议的区别和应用场景
3.2.1 TCP协议
可靠性: TCP是一种可靠的协议,它确保数据的可靠传输。它使用确认机制和重传策略,以确保数据在传输过程中不会丢失或损坏。如果数据包在传输过程中丢失或乱序,TCP会负责重新发送它们,直到接收方确认接收完整的数据。
面向连接: TCP是面向连接的协议,通信的双方需要建立连接,然后进行数据传输,最后关闭连接。这个连接的建立和断开会消耗一定的时间和资源。
流量控制和拥塞控制: TCP具有流量控制和拥塞控制机制,它可以调整数据传输的速率,以避免网络拥塞,并确保高效的数据传输。
适用场景: TCP适用于对数据完整性和可靠性要求较高的应用场景,如文件传输、电子邮件、Web浏览等,其中数据的准确性至关重要。
3.2.2 UDP协议
不可靠性: UDP是一种不可靠的协议,它不提供数据传输的可靠性保证。UDP将数据包发送到目的地,但不确保它们的完整性和顺序性。如果数据包丢失或损坏,UDP不会重新发送。
面向无连接: UDP是面向无连接的协议,通信的双方之间不需要建立持久的连接。每个数据包都是独立的,发送者和接收者之间没有持续的通信状态。
实时性: 由于UDP不需要建立连接和维护状态信息,它的传输速度较快,适用于实时性要求较高的应用,如音频和视频流传输。
适用场景: UDP适用于那些对实时性要求较高且能够容忍一些数据丢失的应用场景,如在线游戏、音频/视频通信、DNS查询等。在这些应用中,速度和即时性比数据的完整性更为重要。
该篇文章续集链接:
网络基础概念_祐言QAQ的博客-CSDN博客
更多C/C++语言、Linux系统、数据结构和ARM板实战相关文章,关注专栏:
手撕C语言
玩转linux
脚踢数据结构
系统、网络编程
探索C++
6818(ARM)开发板实战
📢写在最后
- 今天的分享就到这啦~
- 觉得博主写的还不错的烦劳
一键三连喔
~ - 🎉🎉🎉感谢关注🎉🎉🎉