没有人比我更懂TCP了!!!
本来问题是TCP的三次握手,但是如果要学习三次握手,就得搞懂TCP是什么
所以我刨根问底的搞了一下TCP到底是个啥,有错误的地方还希望大佬们指出
TCP(Transmission Control Protocol), 翻译过来就是传输控制协议
TCP作为一种面向连接的、可靠的、基于字节流的传输层通信协议
接下来我们,根据这个百度百科的解释来研究TCP
首先什么是面向连接?
既然有连接通信,那就有无连接通信
面向连接就是通信双方在通信时,要事先建立一条通信线路,然后进行通信。
无连接就是,通信无需建立通信线路,发送消息后,也无需对方回复
什么是可靠的
首先我们要知道,互联网是不可靠的,因为会有带宽,延迟,等问题
而TCP可以动态的适应这些特性,从而出现可靠的一种通道协议
那他怎么实现可靠的呢?
首先在建立连接的时候,通过三次握手来保证通信通道的可靠
其次使用检验和、***、确认应答、重发控制、连接管理以及窗口控制等机制实现可靠性传输
传输层是什么
这里我们得学习一下网络分层,网络分层用于计算机或通信系统间的互联的标准体系
国际标准化组织(ISO)制定的OSI七层模型,每一层对应的不同的网络协议,这么多协议构成了我们进行通讯的一种规则,所以我们把这些网络协议统称为TCP/IP协议族(可见TCP/IP的重要性)
但是呢
目前没有完全按照OSI模型实现的网络协议栈
所以我们按照TCP/IP四层概念模型来介绍互联网之间是如何进行互联的
互联网之间的通信传输,底层都是靠着网线,电缆等,这年头断水断食不能断网啊!
而我们经常说 等我顺着网线爬过去
那我们来讲一讲每一层做了什么,到底怎么顺着网线爬过去的
发送方由应用层到接口层,层层封装,最后发送到接收方,接收方再一件一件的脱,最终得到相应的数据
那到底每一次都封装了点什么数据呢?
先说一下应用层和网络层,以HTTP协议和IP协议为例
应用层:
HTTP,超文本传输协议,我们看看他的报文格式
可以看到,有我们熟知的请求方法:POST/GET,url地址等
网络层:IP协议,他的报文形式又是什么样呢
可以看到,报文中包含源IP地址和目的IP地址
所以IP协议的作用就是帮我们发现正确的目的IP位置
传输层: 那TCP做了点什么?
报文里包含了目的端口号,而且还有***,确认号
所以TCP通过端口号帮助我们区分数据包所属那个进程
还有通过***和确认号来进行三次握手,保证连接和传输的可靠
TCP和UDP的区别
说到了TCP肯定免不了UDP,讲一下这两者的区别
描述 | TCP | UDP |
---|---|---|
是否连接 | 面向连接 | 无连接 |
传输可靠性 | 可靠 | 不可靠 |
应用场合 | 少量数据 | 大量数据 |
速度 | 慢 | 快 |
总结:
TCP是为了在不可靠的互联网络上提 供可靠的端到端字节流而专门设计的一个传输协议
是一种面向连接的、可靠的、基于字节流的传输层通信协议
只有在确认通信对端存在时才会发送数据,从而可以控制通信流量的浪费。
这一节分析完TCP,下节将一下TCP的三次握手和四次挥手
我这有一份关于java的面试题,大家可以关注我的公众号 果咩z(在最下方!),回复:java面试题来领取