目录
一、TCP协议介绍
1、传输层协议简介
2、TCP协议
二、三次握手
三、四次挥手
总结:
TCP是TCP/IP协议族中传输层协议的一员
传输层总共是有TCP和UDP两大协议
每个协议都有对应的协议号,TCP的协议号是6,UDP的协议号是17。
TCP是传输控制协议
UDP是用户数据报协议
1.TCP是面向连接的、可靠的进程到进程通信的协议
2.TCP提供全双工服务,即数据可在同一时间双向传输
3.TCP报文段
TCP将若干个字节构成一个分组,叫报文段
TCP报文段封装在IP数据报中
这边添加了一个报文段的表格
名词后面跟随的数字是占用的二进制数位,每层占用32二进制
源端口号:是发送方的端口号,一般是针对客户机
目标端口号:是接收方的端口号,一般是针对服务器
序号:发送端为每个字节进行编号,以便于接收端正确重组
确认号:用于确认发送端的信息
例如:PC1向PC2发送四个数据,但是PC2一次只能接收3个数据,PC2就会只接收3个数据段,第四个不接受,并且向PC1回信说我只能接收三个,PC1再把第四个数据传输一次或者把第四段数据跟剩下的一起传
首部长度:包头的长度
保留:保留位
状态位:URG、ACK、PSH、RST、SYN、FIN
注:上面六个状态位,TCP中只用到三个:SYN、ACK、FIN,这三个,分别代表的意思是:
SYN:同步序列号,TCP需要建立连接的时候将SYN的数值设置成1
ACK:确认序列号,当ACK数值为1的时候,用于确认发送方的数据
FIN:当TCP连开连接的时候,将FIN数值设置成1,就是断开连接的时候用
窗口大小:用于说明本地可接受数据段的数目。窗口大小是可变的。
校验和:发送方发送数据的时候会附加一个校验值,接收方接收信息的时候会校验,是不是跟发送方的校验值一摸一样,一样就就接收。
紧急指针:TCP中会把小的零散数据放在一起发送,紧急指针就是为小数据添加标记,紧急发送,不再进行跟别的数据捆绑发送,而是接收到之后立即发送,比较紧急。
第一次PC1跟PC2发送连接请求,SYN发送建立连接的请求,此时数值是1,还有一个Seq,序列号,数字是X,数值恶意任意设置。
请求信息到达PC2之后,如果PC2同意建立,就会跟PC1回数据说可以,就会产生确认值(Ack),确认无同意请求,这个值是PC1的序列号+1,同时PC2也会生成一个序列号 数字是Y(数字任意,不等于X就行),PC2在回信息的时候SYN和ACK的数值都是1
PC2的回信在传达回PC1之后,PC1再回信息同意PC2建立的连接,此时序列号Seq的数值是X+1 是基于之前X的数值+1。确认序列号Ack的数值是Y+1,并且回信息ACK数值是1,证明开启了确认序列位。
三次握手的原理:客户端想服务器端发送SYN同步请求,请求与服务器建立连接,服务器收到此SYN同步信息请求后,会针对客户端的SYN同步请求进行响应的同时也会发送一个SYN同步请求,当客户端收到服务器发过来的SYN同步请求的时候,会给予一个ACK响应
为什么三次握手:
因为TCP是可靠的传输层协议,他在传输数据之前,会建立双向通信通道,当保证双向数据传输的通道没有问题的时候,才会发送数据,起到保护数据的作用
第一次,PC1跟PC2发送断开连接请求,PC2接收到之后,给PC1回ACK信息,并且再给PC1发送断开连接请求,PC1接到PC2发送的断开请求之后回复ACK确认序列号。
四次挥手的原理:
客户端向服务器发送FIN断开请求,服务器接收到此请求后,回复一个ACK。服务器向客户机发送FIN断开请求,客户机收到此请求之后,再回复一个ACK
为什么连接的时候三次握手,断开反而要四次?
数据传输是双向的,一个数据通道的关闭需要一次请求一次确认,两个数据方向就是需要中断四次。
还会有种情况,TCP半关闭状态:
客户机向服务器发送了FIN请求,服务器也给予了ACK相应。但是服务器和客户机之间还有数据需要传输,导致了传输线路只关闭了一条,还有一条没有关闭。
常用的TCP端口号及其功能
FTP,端口号是21,作用是FTP服务器所开放的控制端口
TELNET:端口号是23,作用是远程登录,可以远程控制管理目标
SMTP:端口号是25,发送邮件
HTTP:端口号是80,文本传输文件
POP3:端口号是11,邮件接收
端口号的范围
客户端根据哪种服务,从而发送到特定的端口。
端口被划分成三个类别,作用范围是1—65535之间。
公认端口:与通用网络应用程序相关联的目的端口,其范围是1—023
注册端口:端口号是1024—49151,可以作为源端口或者目的端口组织可以使用这些端口注册即时消息等应用程序。
私有地址:端口号是49152—65535,通常作为源端口号使用
一般私有地址端口号是不固定的,经常变化,公有地址的端口号通常是固定不变的,注册端口大部分也是不怎么变化。
UDP相对于TCP,简单很多
UDP是一种无连接,不可靠的传输协议。
但是,就是因为无连接,所以能够达到高速度传输,数据不能够重传,传输效率很高
UDP的报文格式,这个也是就短短的几个
源端口:发送方的端口
目标端口:接收方的端口
UDP长度:数据的长度
UDP校验和:对数据的一个校验
UDP协议下的端口号及其功能:
上面三个就是UDP常用的端口以及对应的协议
UDP跟TCP的作用是相反的
TCP是安全可靠的传输协议,数据能够重传,但是需要先建立连接,结束还要断开,比较繁琐,也一定程度上影响速率,主要应用于对安全性较高的场合
UDP是没有安全性的,是直接发送数据,随时连接随时断开,所以,很大程度保证了传输的速率,主要应用于对网速要求高的娱乐等追求高速度、无重传的场合
以上就是TCP与UDP协议的介绍,相对于TCP,UDP的介绍完全就是寥寥无几,因为UDP协议中的一句话就是:我只追求快点送出去,不想拿在手里面。大概就是这个意思吧,所以UDP只想快点传输出去,不管别的东西了
TCP是传输层两大协议之一,传输层又是用户经常接触的一个层次,TCP/UDP两个协议也是非常重要的,TCP里面最重要的三次握手四次挥手,这个是非常重要的基础知识,需要牢牢记住,每次握手/挥手的时候,发送的协议号次数,不能搞错。