TCP协议&UDP协议

传输层协议

一、TCP协议&UDP协议

传输层协议有TCP协议和UDP协议

TCP协议介绍

  • TCP:传输控制协议

  • TCP是面向连接的、可靠的进程到进程通信的协议

  • TCP提供全双工服务,即数据可在同一时间双向传输

UDP协议介绍

  • UDP:用户数据报协议

  • UDP是无连接、不可靠的传输协议

  • 花费的开销小

TCP和UDP的区别

  • TCP是面向连接的、可靠的进程到进程通信的协议。TCP提供全双工服务,即数据可在同一时间双向传输,每一个TCP都有发送缓存和接收缓存,用来临时存储数据。

  • UDP协议是无连接、不保证可靠性的传输层协议。发送端不关心发送的数据是否到达目标主机、数据是否出错等,收到数据的主机也不会告诉发送方是否收到了数据,它的可靠性由上层协议来保障。传输数据速度更快,效率更高

TCP&UDP对比

二、TCP报文格式&UDP报文格式

1.TCP报文格式

TCP报文格式

TCP头部组成:源端口号目的端口号、序号、确认号、头部长度(可根据选项变长,20~60字节)、控制位(URG ACK PSH RST SYN FIN)、 滑动窗口(控制流量大小)、校验和、紧急指针、选项

控制位解释

URG:紧急位,URG=1 表示紧急数据,配合紧急指针才有效
ACK:确认位,ACK=1 确认号才生效
PSH:急迫位/推送位,PSH=1 尽快地把数据送达应用层
RST:重置位,RST=1 重新建立连接
SYN:同步位,SYN=1 表示连接请求报文
FIN:断开位,FIN=1 表示断开连接

2.UDP报文格式

UDP头部组成:源端口号 目的端口号 UDP总长度(包含数据和头部) 校验和

UDP报文格式

  • UDP长度:用来指出UDP的总长度,为首部加上数据

  • 校验和:用来完成对UDP数据的差错检验,它是UDP协议提供的唯一的可靠机制

三、TCP协议

1.TCP三次握手

第一次:客户向服务器发送连接请求段,建立连接请求控制段(SYN=1),表示传输的报文段的第一个数据字节的序列号是x,此序列号代表整个报文段的序号(seq=x);客户端进入SYN SEND (同步发送状态);

第二次:服务器发回确认报文段,同意建立新连接的确认段(SYN=1),确认序号字段有效(ACK=1),服务器告诉客户端报文段序号是y(seq=y),表示服务器已经收到客户端序号为x的报文段,准备接受客户端序列号为x+1的报文段(ack_seq=x+1);服务器由LISTEN进入SYN RCVD(同步收到状态);

第三次:客户对服务器的同一连接进行确认.确认序号字段有效(ACK=1),客户此次的报文段的序列号是x+1(seq=x+1),客户期望接受服务器序列号为y+1的报文段(ack seg=y+1);当客户发送ack时,客户端进入ESTABLISHED 状态;当服务收到客户发送的ack后,也进入ESTABLISHED状态,第三次握手可携带数据。

三次握手

2.TCP四次挥手

第一次:客户向服务器发送释放连接报文段,发送端数据发送完毕,请求释放连接(FIN=1),传输的第一个数据字节的序号是x(seq=x);客户端状态由ESTABLISHED进入FIN WAIT1(终止等待1状态);

第二次:服务器向客户发送确认段,确认字号段有效(ACK=1),服务器传输的数据序号是y(seq=y ),服务器期望接收客户数据序号为x+1(ack seg=x+1);服务器状态由(seq=y )ESTABLISHED进入CLOSE WAIT(关闭等待);客户端收到ACK段后,由FIN WAIT 1进入FIN WAIT 2;

第三次:服务器向客户发送释放连接报文段,请求释放连接(FIN=1),确认字号段有效表示服务器期望接收客户数据序号为x+1(ack seq=x+1),表示自己传输的第一个(ACK=1),字节序号是y+1(seq=y+1);服务器状态由CLOSE_WAIT 进入 LAST ACK(最后确认状态)

第四次:客户向服务器发送确认段,确认字号段有效(ACK=1),表示客户传输的数据序号是x+1(seg=x+1)表示客户期望接收服务器数据序号为y+1+1(ack seg=y+1+1);客户端状态由FIN WAIT 2进入TIME WAIT,等待2MSL时间,进入CLOSED状态服务器在收到最后一次ACK后,由LASTACK进入CLOSED;

四次挥手

MSL解释
MSL是Maximum Segment Lifetime,报文最大生存时间,它是任何报文在网络上存在的最长时间,超过这个时间报文将被丢弃。

四、常见协议及其端口

1.TCP协议及功能

HTTP(80)(超文本传输协议):用于浏览器和Web服务器之间的请求和响应的交互

HTTPS(443)(超文本传输安全协议):在HTTP的基础上加了SSL/TLS层(安全套接层)的安全的超文本传输协议

FTP(21)(文件传输协议):用于控制连接FTP服务器

DNS (53)(域名系统):用于连接DNS服务器

SMTP (25)(简单邮件传输协议):用于发送邮件

POP3 (110)(邮局协议版本3):用于接收邮件

SSH(22)(安全外壳协议):用于计算机之间的远程加密登录

RDP(3389)(远程桌面协议):通过这个端口,用"远程桌面"等连接工具来连接到远程的Windows服务器

2.UDP协议

	TFTP(简单文件传输协议(69)):用于小文件的传输
    
    DNS(域名系统(53)):用于解析DNS
    
    RPC(远程调用协议(111)):用于远程过程调用
    
    SNMP(简单网络管理协议(161)):用于网络设备的管理
    
    NTP(网络时间协议(123)):用于网络时间同步

此文仅为个人理解,请各位前辈点评

  • 21
    点赞
  • 20
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值