传输层协议以及三次握手、四次挥手
传输层协议以及三次握手、四次挥手
一、TCP协议
1、TCP协议概述
TCP是面向连接的、可靠的进程到进程通信的协议
TCP提供全双工服务,即数据可在同一时间双向传输
2、TCP报文段
TCP将若干个字节构成一个分组,叫报文段(Segment)
TCP报文段封装在IP数据报中
序号:发送端为每个字节进行编号,便于接收端正确重组
确认号:用于确认发送端的信息
窗口大小:用于说明本地可接收数据段的数目,窗口大小是可变的
标志位 | 作用和意义 |
---|---|
URG | 指示报文段里存在着被发送方的上层实体标记为”紧急”数据,当URG=1时,其后的紧急指针指示紧急数据在当前数据段中的位置(相对于当前序列号的字节偏移量),TCP接收方必须通知上层实体。 |
ACK | 当ACK=0时,表示该数据段不包含确认信息,当ACK=1时,表示该报文段包括一个对已被成功接收报文段的确认。 |
PSH | 当PSH=1时,接收方在收到数据后立即将数据交给上层,而不是直到整个缓冲区满。 |
RST | 用于重置一个已经混乱的连接(如主崩溃),也可用于拒绝一个无效的数据段或者拒绝一个连接请求。一般而言,如果你得到的数据段被设置了RST位,那说明你这一端有问题了。 |
SYN | 用于建立连接过程,在连接请求中,SYN=1和ACK=0表示该数据段没有使用捎带的确认域,而连接应答捎带一个确认,即SYN=1和ACK=1。注:捎带是指对客户机到服务器数据的确认被装载在一个承载服务器到客户机的数据 |
FIN | 用于释放一个连接,表示发送方已经没有数据要传输了。此时,接收方可能继续接收数据,好在SYN和FIN数据段都有序列号,从而保证了这两种数据段以正确顺序被处理 |
3、TCP连接(三次握手)
(1)PC1发送SYN报文(Seq=x,SYN=1)
(2)PC2发送SYN+ACK报文(Seq=y,Ack=x+1,SYN=1,ACK=1)
(3)PC1发送ACK报文(Seq=x+1,Ack=y+1,ACK=1)
记忆秘诀(谈恋爱):
(1)小帅:小美,我要和你处对象!
(2)小美:好的啊,你是认真的吗?
(3)小帅:当然是认真的,爱你,么么哒!
4、TCP断开连接(四次挥手)
(1)PC1发送FIN/ACK(FIN=1,ACK=1)
(2)PC2发送ACK报文(ACK=1)
(3)PC2发送FIN/ACK报文(FIN=1,ACK=1)
(4)PC1发送ACK报文(ACK=1)
记忆秘诀(分手):
(1)小帅:累觉不爱,分手吧。
(2)小美:分手就分手。
(3)小美:是我先甩的你,渣男,给我滚。
(4)小帅:互删吧,拜拜。
5、TCP半关闭
当TCP链接中A向B发送FIN请求关闭,另一端B回应ACK后并没有立即发送FIN给A,A方处于半连接状态(半开关),此时A可以接受B发送的数据,但是A已经不能再向B发送数据。
6、TCP半连接
发生在TCP三次握手中
如果A向B发起链接,B也按照正常情况响应了,但是A不进行三次握手,这就是半连接。
半连接攻击:半连接,会造成B分配的内存资源就一直这么耗着,直到资源耗尽。(SYN攻击)
7、常用的TCP端口号及其功能
端口 | 协议 | 说明 |
---|---|---|
21 | FTP | FTP服务器所开放的控制端口 |
23 | TELNET | 用于远程登录,可以远程控制管理目标计算机 |
25 | SMTP | SMTP服务器开放的端口,用于发送邮件 |
80 | HTTP | 超文本传输协议 |
110 | POP3 | 用于邮件的接收 |
二、UDP协议
1、UDP协议概述
无连接、不可靠的传输协议
花费的开销小
2、UDP报文的首部格式
UDP长度:用来指出UDP的总长度,为首部加上数据
校验和:用来完成对UDP数据的差错校验,它是USP协议提供的唯一的可靠机制
3、常用的UDP端口号及其功能
端口 | 协议 | 说明 |
---|---|---|
69 | TFTP | 简单文件传输协议 |
111 | RPC | 远程过程调用 |
123 | NTP | 网络时间协议 |