咬文嚼字(话外音)-讲TCP协议
Posted yuerdongni
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了咬文嚼字(话外音)-讲TCP协议相关的知识,希望对你有一定的参考价值。
方法论:
我认为理解一个技术,最重要的是要从概念入手,理解是什么及用来做什么。理解是什么可以方便我们进行知识的归类,在这一步中定语也是很关键的点,这部分可以让我提出为什么及其他知识延伸,进一步理解和升华知识点,至于做什么很明显这个能帮忙我们解决某系列的问题。下面我按照这个步骤来剖析,错误的点欢迎指正,同时也对接收的错误知识点的同学表示抱歉。
什么叫TCP。这里是维基百科的定义:传输控制协议(英语:Transmission Control Protocol,缩写:TCP)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能。
第一步是什么,TCP是一个通信协议,在这个只是点上面也展现了母语学习的优势,根据英语全称很容易界定是什么东西,对于我来讲,我觉得我们很有必要记住全称,这样方便我们记忆和了解。在这一步我们就能把该知识的目类归为通信协议,延伸只是还有什么通信协议呢,一般东西根据适用场景都会有不同的针对协议,这里延伸出来的我们应该学学UDP。各自有什么优劣点,用于哪些场景。关于UDP先不细致展开。全称中比较重要的一点就是控制,我们的延伸是如何控制、另外控制也是实现可靠性的关键,从语法来讲为什么可靠,因为控制,当然有点肤浅。
第二步是什么中的定语:面向连接的、可靠的、基于字符流的。
面向连接即基于连接,基于三次握手建立通道。这里也引用一下维基百科的说法:不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。从这里我们可以看出到底什么叫基于连接,网络通信中的可靠信是由TCP协议实现,至于为什么是可靠和怎么保证可靠性我们后面展开。传输层的通信协议通常需要指定端口号,所以我们这里可以简单的连接就是就是两个端口间的通道,后续资源一般也是围绕端口展开,所以也可以说是资源的开放。至于什么是端口自己理解一下,我的理解就是两个进程(两个计算机)要通讯首先你得把小窗户打开等着吧,要不其他人怎么进来。
可靠是什么,怎么保证可靠,可靠在这里的意思是就是有求必应,保证可靠性一般在计算机来讲是通过确认来实现的。该处的可靠性是通过三次握手确认双方存活,建立通道之后,对方发送任何消息都要回应(ack),就像两个人聊天你不确认对方是否存在或者说有接收你信息的能力,然后我们就巴拉巴拉说一堆,就很不可靠,对方接收不了不说,自己还浪费口水和精力,炒鸡不可靠。所以我们得建立连接,确认双方在同一个频道。从频道这个词里面也可延伸出TCP通信中的ACK=1和Seq实现的机理。另外为了保证进程间通讯的可靠性,TCP还规定达则必应,相当于每次一方说完话,另一方都得回应说我收到。这两个环节在我们自然对话中都显得有点可笑,自然对话中我们见到对方通常就认为我们已经对好了频道,我们说的每一句话对方都能正常理解(编码解码),这个角度来讲你也可以理解TCP是一套通信编码解码机制,但同时也表明我们自然对话很多时候都缺失调频和ack。
基于字符流。字节流(英语:byte stream)在计算机科学中是一种比特流,不过里面的比特被打包成一个个我们叫做字节(Bytes)的单位。在电脑网络内,八比特字符串流(octet stream)有时会拿来代表同样的东西;这种措辞强调了我们的字节是8比特的字节,或者说八比特(octets)。最早字节这个词被引进的时候,本身并没有一个大小的标准;不过大多数现在的电脑字节都等同于八比特。这个是维基百科的定义。这里的专业表述已经很明了,就不额外说明了。类比我们自然对话来讲,我们不要一个字一个字马上蹦出来,要在脑中构思好一句话,进行必要的编码,组织成字节串流程,在发送给对方,这样子对方接收到编码合适的话语也相对好解码,记住要打包。
关于第二步中的在技术角度如何面向连接和可靠性理解和实现的原理的通俗在下一遍说明,画图+大白话。
第三步用来做什么,完成第四层传输层所指定的功能,要完成对应功能,TCP编码和解码过程又是如何的难以记忆,所以一般都需要暴露接口。我的角度是认为TCP对外暴露了一个接口,这个接口叫socket,对于socket的翻译从不同的角度来讲有不一样的原因,同时也有助于我们理解socket的某些知识点。网络套接字(英语:Network socket;又译网络套接字、网络接口、网络插槽)在计算机科学中是电脑网络中行程间数据流的端点。为什么叫网络套接字呢,因为他是一个五元组--本机ip、端口、对方机器ip、对方机器端口,看他们套在一起。为什么叫网络接口,接口可以理解为一个句柄,建立连接之后返回一个socket句柄,通过这接口我们可以方便的发送和接收数据。什么叫网络插槽,我的理解的英文原意就是插座的意思,这个东西插在TCP协议上,就是基于TCP协议的实现,或者TCP到IP的实现就是socket的。从这里简单TCP/IP协议就是规定了socket怎么实现的协议。我们借助socket能实现网络之间的通信。
备注给自己:自然对话机理上我觉得金字塔理论基于对话原则的实现。
以上是关于咬文嚼字(话外音)-讲TCP协议的主要内容,如果未能解决你的问题,请参考以下文章