【网络编程】TCP/IP协议(互联网的基石)

  • (꒪ꇴ꒪ ),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加密通信,确保数据传输的安全性和机密性。它在敏感数据传输中广泛使用,如在线支付和登录。

        TelnetTelnet是一种用于远程登录到远程计算机的协议。它允许用户在本地计算机上通过终端访问远程计算机系统,执行命令和操作远程资源。

        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)开发板实战

📢写在最后

  • 今天的分享就到这啦~
  • 觉得博主写的还不错的烦劳 一键三连喔~
  • 🎉🎉🎉感谢关注🎉🎉🎉

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/69882.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Go语言最全面试题,拿offer全靠它,附带免积分下载pdf

面试题文档下链接点击这里免积分下载 go语言入门到精通点击这里免积分下载 文章目录 Go 基础类GO 语言当中 NEW 和 MAKE 有什么区别吗?PRINTF(),SPRINTF(),FPRINTF() 都是格式化输出,有什么不同?GO 语言当中数组和切片的区别是什么&#xf…

华为云云服务器评测|云耀云服务器实例基础使用实践

🦖我是Sam9029,一个前端 Sam9029的CSDN博客主页:Sam9029的博客_CSDN博客-JS学习,CSS学习,Vue-2领域博主 **🐱‍🐉🐱‍🐉恭喜你,若此文你认为写的不错,不要吝啬你的赞扬,求…

leetcode669. 修剪二叉搜索树(java)

修剪二叉搜索树 题目描述递归代码演示: 题目描述 难度 - 中等 LC - 669. 修剪二叉搜索树 给你二叉搜索树的根节点 root ,同时给定最小边界low 和最大边界 high。通过修剪二叉搜索树,使得所有节点的值在[low, high]中。修剪树 不应该 改变保留…

搭建HTTPS服务器

HTTPS代理服务器的作用与价值 HTTPS代理服务器可以帮助我们实现网络流量的转发和加密,提高网络安全性和隐私保护。本文将指导您从零开始搭建自己的HTTPS代理服务器,让您更自由、安全地访问互联网。 1. 准备工作:选择服务器与操作系统 a. 选…

python爬虫关于ip代理池的获取和随机生成

前言 在进行爬虫开发时,代理IP池是一个非常重要的概念。代理IP池是指一个包含多个可用代理IP的集合,这些代理IP可以用来绕过网站的防爬虫策略,从而提高爬取数据的成功率。 在本文中,我们将介绍如何获取代理IP池,并且随…

【C++杂货铺】探索list的底层实现

文章目录 一、list的介绍及使用1.1 list的介绍1.2 list的使用1.2.1 list的构造1.2.2 list iterator的使用1.2.3 list capacity(容量相关)1.2.4 list element access(元素访问)1.2.5 list modifiers(链表修改&#xff0…

anaconda navigator打不开,一直在loading画面

anaconda navigator打不开,一直在loading画面。百度解决方法,用网上的方法在命令窗口里运行conda update anaconda结果一直显示 solving environment卡在那里。又尝试用管理员身份运行还是不行,打开后出现There in aninstance of Anaconda Na…

C标准输入与标准输出——stdin,stdout

🔗 《C语言趣味教程》👈 猛戳订阅!!! ​—— 热门专栏《维生素C语言》的重制版 —— 💭 写在前面:这是一套 C 语言趣味教学专栏,目前正在火热连载中,欢迎猛戳订阅&#…

iOS系统下轻松构建自动化数据收集流程

在当今信息爆炸的时代,我们经常需要从各种渠道获取大量的数据。然而,手动收集这些数据不仅耗费时间和精力,还容易出错。幸运的是,在现代科技发展中有两个强大工具可以帮助我们解决这一问题——Python编程语言和iOS设备上预装的Sho…

动态规划之简单多状态

简单多状态 1. 按摩师(easy)2. 打家劫舍II (medium)3. 删除并获得点数(medium)4. 买卖股票的最佳时机含冷冻期(medium)5. 买卖股票的最佳时机III(hard) 1. 按…

c++(c语言)通用版本的单链表的头插法创建

我们创建一个长度为n的链表时,可以采取头插法创建或者尾插法创建,本篇博客我们采取头插法来创建,(作者只学了头插,尾插等以后来补qwq)。 我们先来画图来看看头插的创建形式把,会了原理再写代码。 首先是我…

自定义TimeLine实现卡拉OK轨

系列文章目录 自定义TimeLine 自定义TimeLine 系列文章目录前言正文UI部分代码部分Data(数据)Clip(片段)Track(轨道)Mixer(混合)被控制物体 总结 前言 自定义TimeLine实际上就是自定…

Redis缓存的高并发问题

Redis 做缓存虽减轻了 DBMS 的压力,减小了 RT,但在高并发情况下也是可能会出现各 种问题的。 1 缓存穿透 当用户访问的数据既不在缓存也不在数据库中时,就会导致每个用户查询都会“穿透” 缓存“直抵”数据库。这种情况就称为缓存穿透。一个…

OpenCV(十):图像缩放、翻转、拼接的介绍与使用

目录 (1)图像缩放:resize() (2)图像翻转: flip() (3)图像拼接:hconcat() 和vconcat() (1)图像缩放:resize() 使用 cv2.resize() 函…

sql:SQL优化知识点记录(十一)

(1)用Show Profile进行sql分析 新的一个优化的方式show Profile 运行一些查询sql: 查看一下我们执行过的sql 显示sql查询声明周期完整的过程: 当执行过程出现了下面这4个中的时,就会有问题导致效率慢 8这个sql创建…

搬家快递服务小程序的便利性

在当今快节奏的生活中,搬家可能是很多人都需要面对的问题。无论是新房子还是新办公室,都需要高效、便捷的搬家服务。本文将介绍如何使用第三方小程序制作平台,如乔拓云平台,开发一款高效便捷的搬家服务小程序。 1. 注册登录第三方…

【易售小程序项目】修改“我的”界面前端实现;查看、重新编辑、下架自己发布的商品【后端基于若依管理系统开发】

文章目录 “我的”界面修改效果界面实现界面整体代码 查看已发布商品界面效果商品数据表后端上架、下架商品ControllerMapper 界面整体代码back方法 编辑商品、商品发布、保存草稿后端商品校验方法Controller 页面整体代码 同项目其他文章 “我的”界面修改 效果 界面实现 界…

【C++设计模式】详解装饰模式

2023年8月31日,周四上午 这是我目前碰到的最难的设计模式..... 非常难以理解而且比较灵活多半,学得贼难受,写得贼费劲..... 2023年8月31日,周四晚上19:48 终于写完了,花了一天的时间来学习装饰模式和写这篇博客。 …

序列到序列学习(seq2seq)

permute(1,0,2),将batch_size 放在中间state 最后一个时刻,每个层的输出

数学建模--Subplot绘图的Python实现

目录 1.Subplot函数简介 2.Subplot绘图范例1:绘制规则子图 3.Subplot绘图范例2:绘制不规则子图 4.Subplot绘图范例3:gridspec辅助实战1 5.Subplot绘图范例4:gridspec辅助实战2 1.Subplot函数简介 """ 最近在数学建模种需要绘制多张子图,发现对于subplot函…