JAVA面试-计算机网络-TCP/IP协议
本帖最后由 阿里灵灵 于 2021-4-1 00:48 编辑## 学习原因
最广泛应用的网络协议,一个必须捋清楚的知识点。
建议读这篇之前,去看看我之前讲OSI的帖子,看完后会更好理解。
链接:(https://www.52pojie.cn/thread-1404469-1-1.html)
## TCP/IP协议,TCP协议,IP,三者傻傻分不清楚 ##
我们记忆中看到的好像就是TCP协议,比如**TCP三次握手**,**TCP四次挥手**,但是好像又有和IP组合成**TCP/IP协议**这样的词,就很蒙逼。
而我在这里给小伙伴们捋一下。
**TCP/IP协议**指的是**包含应用层、传输层、网络层和网络接口层的一整套协议**,里面包含FTP、UDP、TCP等各类协议。这一大堆看了头皮发麻的协议我们先不用管,我们只要知道TCP/IP协议包含TCP协议,TCP协议是TCP/IP的子集。
那为什么单独起这个名字?因为这两个协议在这个体系中非常重要。这两个协议是保证网络数据信息能快速完整传输的关键。就像心脏在人体中的关键作用。
分开的话,**TCP**指的是传输层上的协议——**传输控制协议**(Transmission Control Protocol),**IP**指的是网络层上的协议——**网际互连协议**(Internet Protocol)。
这就是为什么TCP单独拎出来的时候,常和TCP三次握手和四次挥手联系到一块,因为**TCP**单独拎出来的时候,就是**一个具体的、传输层上的协议**,和ip写到一块就是**指一个宽泛的网络协议系统**。
所以我们在讨论TCP协议的时候,讨论的是信息如何传输,在讨论TCP/IP协议的时候,讨论的是具体的四层架构。
## TCP/IP协议、OSI七层模型、五层模型的关系
**1、OSI模型是优化TCP/IP协议后的理论模型。**
**TCP/IP协议诞生比OSI模型更早。**没想到吧,TCP/IP协议居然是OSI模型的大哥,TCP/IP提出是1973年左右提出,而OSI七层模型最终版本定于1979年。
OSI七层模型的提出一方面是为了**优化TCP/IP协议**,另一方面是**提出更加全面、标准、规范的网络层次模型**。其实这就跟父母十年后还要二胎的理由一样的,一方面是怕大的孤独,二是闲着没事干,再好好练一个号刷新老大的记录。
同时还要在这里澄清一下,二者的关系就类似于**建筑图纸和建筑实体**的关系,OSI七层模型是图纸,TCP/IP协议是实体。二者并不是同一层的概念。
**2、TCP/IP协议为什么不改进,去彻底实现OSI模型?**
(1)OSI模型是理论模型,设计上虽然贼有道理,规范了各个层的作用,但是在实际具体实现的时候是十分复杂的,要七层进行交互等,并没有TCP协议简单高效,所以TCP协议能够快速推广,并且一直延用着。
(2)TCP/IP协议诞生比OSI模型早,应用已经广泛了,再结合第一条原因所以并没有对其进行更改。
**3、好端端的,咋就又多了一个五层模型?**
那是因为在TCP/IP协议中并**没有具体的规定和设计网络接口层**,但又因为网络接口层实现的内容和OSI七层模型中的物理层和数据链路层**大致相同**,更加为了能清晰阐述网络接口层的作用,我们就用OSI七层模型中的物理层和数据链路层代替网络接口层,于是就多了个五层模型。
这个是专业课书上明明白白的内容,书是不是都用来当枕头了?
所以总结来说,TCP/IP是最早出来的,所以分层不清晰,OSI七层模型是为了优化TCP/IP协议做出的理论模型,而五层模型是为了让TCP/IP协议的网络接口层更好理解才提出的。
## TCP/IP协议各层的作用
### 网络接口层 ###
**1、设置地址和传播路径**
就像前面所说的,网络接口层可以用OSI七层模型中的物理层和数据链路层的作用代替。
而OSI七层模型中物理层和数据链路层的作用分别是:
**物理层:物理层用于规范传输介质。**
简单来说,传输介质就是指网线、光纤这些用于传输数据的长长细细的线,规范就是指规定网线该长咋样,光纤该长咋样,为啥是又细又长,为啥那么多小细线组成,就都是这里规范的。
**数据链路层:规范物理层接收的数据形式,让其能在电脑的传输介质中传输**
数据在物理介质中是一段一段传播,就好像一根水管不是一天到晚都开着,而是时开时关,所以就是一段一段的,在水管里面水是一段一段的没有任何处理没关系,但是数据可不行,数据需要特定的协议去规范这一段一段的数据该怎么组成。而这就在数据链路层中实现。
### 网络层 ###
显然电脑之间并不是简单的一条网线直连,而是通过一系列路由充当中转站,层层传递,才能把信息从这台电脑传递到另外一台电脑。如此多路由和网线,如何才能准确把一个信息传递到另一台电脑呢?而这就是网络层的作用,网络层通过设置对应的IP信息,也就是网络地址,让信息能过准确进行传递。
### 传输层###
**1、建立端到端的信息传递**
这个也很好理解,这里的端,指的是端口,比如192.168.6.1:80和192.168.6.1:22,这两个是同一个IP里面的不同端口。端口的作用是区别不同的应用程序,使不同操作系统的计算机应用程序能够互相通信。就好比80端口是给QQ用的,22端口是给微信用的,这样区分端口库,可以保证不让信息传错。
所以按照上面已经了解的层级,我们可以确保信息从这个电脑传递到另一台电脑,但是无法确保能准确的从这个电脑的微信,准确传递到另一台电脑的微信上面。而这就是传输层的作用了,传输层的作用就是要确保信息能在不同电脑的相同应用上面进行传输。
### 应用层 ###
**1、应用进程间通信和交互的规则**
这里实现搭建信息交互渠道,信息转译和最终信息交互。
通俗来讲,人家出租车都把我们送到目的地了,之后怎么处理就是我们的事了。比如要和对方在会议室见就是搭建信息交互渠道,和对方统一用普通话说就是规范信息交互规则,一手交钱一手交货就是信息交互。
而这几个步骤可不能现场乱编,而是提前让双方知道,这就是应用层协议。比如网页应用就用HTTP,电子邮件就用SMTP之类。这些协议就规定了上面几步该如何做。
## 结语
这里介绍了TCP/IP协议的概念和具体结构,同时捋清楚一些概念,具体的TCP,HTTP之类的知识概念会在之后总结发出。太晚了,有些疏漏明天再补充和订正。各位小伙伴如果有什么建议也可以提出来。 结合http协议讲讲JAVA socket编程? 学习了,谢谢楼主 学习了。 moocer 发表于 2021-4-1 00:31
结合http协议讲讲JAVA socket编程?
这个可以,但是具体如何写,我还得构思一下。 感谢大佬分享 很棒!感谢分享 感谢,好好学学这个东西,面试的时候应该会派上用场。 讲得很好理解,谢谢楼主了 学习无止境!谢谢楼主
页:
[1]
2