前言:
1、传输层:
2、TCP协议:(传输控制协议)
3、三次握手原理:
4、为什么要三次握手?
5、四次挥手原理:
6、三次握手握三次,为什么断开要断四次?
7、TCP半关闭状态是什么情况?
8、常用的TCP端口号及其功能:
9、UDP协议:用户数据报协议
总结:
传输层协议添加端口就可以标识应用层协议。应用层协议代表着服务器上的服务,服务器上的服务
如果对客户端提供服务,必须在TCP或UDP端口侦听客户端的请求。
传输层是OSI参考模型中的第四层,传输层协议为网络端点主机上的进程之间提供了可靠、有效的报文传送服务。
传输层的服务一般要经历传输连接建立阶段,数据传送阶段,传输连接释放阶段3个阶段才算完成一个完整的服务过程。
而在数据传送阶段又分为一般数据传送和加速数据传送两种形式。
传输层中最为常见的两个协议分别是传输控制协议(TCP)和用户数据报协议(UDP)。
传输层提供逻辑连接的建立、传输层寻址、数据传输、传输连接释放、流量控制、拥塞控制、多路复用和解复用、崩溃恢复等服务。
TCP是面向连接的,可靠的进程到进程通信的协议;
TCP提供全双工服务,即数据可在同一时间双向传输;
TCP报文段:
(1)TCP将若干个字节构成一个分组,叫报文段(Segment)
(2)TCP报文段封装在IP数据报中
(1)端口号:用来标识同一台计算机的不同的应用进程。
(2)源端口:源端口和IP地址的作用是标识报文的返回地址。
(3)目的端口:端口指明接收方计算机上的应用程序接口。
(4)序号(sequence number):Seq序号,占32位,用来标识从TCP源端向目的端发送的字节流,发起方发送数据时对此进行标记。
(5)确认号(acknowledgement number):Ack序号,占32位,只有ACK标志位为1时,确认序号字段才有效,Ack=Seq+1。
控制位:URG ACK PSH RST SYN FIN,共6个,每一个标志位表示一个控制功能。
URG:紧急指针(urgent pointer)有效。
ACK:确认序号有效。
PSH:接收方应该尽快将这个报文交给应用层。
RST:重置连接。
SYN:发起一个新连接。
FIN:释放一个连接。
注意:不要将确认序号Ack与标志位中的ACK搞混了。确认方Ack=发起方Seq+1,两端配对。
客户端向服务器发送SYN同步请求,请求与服务器建立连接,服务器收到此SYN同步请求后,会针对客户端的SYN同步请求进行ACK响应的同时也会发送一个SYN同步请求,当客户端收到服务器发过来的SYN同步请求时,会给予一个ACK响应。
举个通俗一点的例子:把客户端比作男孩,服务器比作女孩。用来说明“三次握手”的过程:
(1)男孩喜欢女孩,于是写了一封信告诉女孩:我爱你,请和我交往吧!写完信之后,男孩焦急地等待,因为不知道信能否顺利传达给女孩。
(2)女孩收到男孩的情书后,心花怒放,原来我们是两情相悦呀!于是给男孩写了一封回信:我收到你的情书了,也明白了你的心意,其实,我也喜欢你!我愿意和你交往!写完信之后,女孩也焦急地等待,因为不知道回信能否能顺利传达给男孩。
(3)男孩收到回信之后很开心,因为发出的情书女孩收到了,并且从回信中知道了女孩喜欢自己,并且愿意和自己交往。然后男孩又写了一封信告诉女孩:你的心意和信我都收到了,谢谢你,还有我爱你!
女孩收到男孩的回信之后,也很开心,因为发出的情书男孩收到了。由此男孩女孩双方都知道了彼此的心意,之后就快乐地交流起来了~~
这就是通俗版的“三次握手”,期间一共往来了三封信也就是“三次握手”,以此确认两个方向上的数据传输通道是否正常。
因为TCP是可靠的传输层协议,它在传输数据前,会建立双向数据通信通道,当保证双向数据传输的通道没有问题时,才会发送数据,起到保护数据的作用。
客户端向服务器发送FIN断开请求,服务器接收到此请求后,回复一个ACK。服务器向客户机发送FIN断开请求,客户机收到此请求后,回复一个ACK。
举个通俗一点的例子:把客户端比作男孩,服务器比作女孩。用他们的分手来说明“四次挥手”过程。
"第一次挥手":日久见人心,男孩发现女孩变成了自己讨厌的样子,忍无可忍,于是决定分手,随即写了一封信告诉女孩。
“第二次挥手”:女孩收到信之后,知道了男孩要和自己分手,怒火中烧,心中暗骂:你算什么东西,当初你可不是这个样子的!于是立马给男孩写了一封回信:分手就分手,给我点时间,我要把你的东西整理好,全部还给你!男孩收到女孩的第一封信之后,明白了女孩知道自己要和她分手。随后等待女孩把自己的东西收拾好。
“第三次挥手”:过了几天,女孩把男孩送的东西都整理好了,于是再次写信给男孩:你的东西我整理好了,快把它们拿走,从此你我恩断义绝!
“第四次挥手”:男孩收到女孩第二封信之后,知道了女孩收拾好东西了,可以正式分手了,于是再次写信告诉女孩:我知道了,这就去拿回来!
TCP建立连接时之所以只需要"三次握手",是因为在第二次"握手"过程中,服务器端发送给客户端的TCP报文是以SYN与ACK作为标志位的。SYN是请求连接标志,表示服务器端同意建立连接;ACK是确认报文,表示告诉客户端,服务器端收到了它的请求报文。
即SYN建立连接报文与ACK确认接收报文是在同一次"握手"当中传输的,所以"三次握手"不多也不少,正好让双方明确彼此信息互通。
数据传输方向是双向的,一个方向的数据通道关闭需要一次请求和一次确认,因此需要断两次,而我们有两个数据方向,因此需要断四次。
客户机向服务器发送了FIN请求,服务器也给予了ACK响应。但是,服务器还有数据需要传输给客户机,因此服务器并没有向客户机立即发送FIN请求。
端口 | 协议 | 说明 |
21 | FTP | FTP服务器所开放的控制端口 |
23 | telnet | 用于远程登入,可以远程控制管理目标计算机 |
25 | SMTP | SMTP服务器开放的端口,用于发送邮件 |
80 | HTTP | 超文本传输协议 |
110 | POP3 | 用于邮件接收 |
端口号:
客户端根据需要那种服务,从而发送到特定的目的端口
端口划分为三个类别,其范围介于1到65,535之间。
—公认端口(服务器用):
与通用网络应用程序相关联的目的端口称为公认端口这些端口的范围从1到1023。
—注册端口:
端口1024到49151可作为源端口或目的端口使用。组织可使用这些端口注册即时消息等应用程序。
—私有端口(客户机用):
端口49152到65535通常作为源端口使用。
总结:服务器端口号小且固定不变;客户机的端口号大(上万)且不固定;
UDP协议与TCP协议的区别:
UDP协议:用户数据报协议 |
TCP协议:传输控制协议 |
无连接,不可靠的传输协议; |
面向连接,可靠的传输协议; |
花费的开销小; |
分段,重组,重传;滑动窗口; |
传输效率高; |
适用于对可靠性要求较高的场合; |
UDP报文的首部格式:
源端口号(16) 目标端口号(16)
UDP长度(16) UDP校验和(16)
数据报的长度是指包括报头和数据部分在内的总字节数。
UDP协议使用报头中的校验值来保证数据的安全。
常用的UDP端口号及其功能:
端口 | 协议 | 说明 |
69 | TFTP | 简单文件传输协议 |
111 | RPC | 远程过程调用 |
123 | NTP | 网络时间协议 |
1、TCP协议介绍;
2、TCP报文格式;
3、TCP三次握手和四次挥手原理;
4、UDP协议介绍;
5、TCP和UDP常见协议及端口