网络--TCP和UDP(三次招手和四次挥手)--(第二天))

TCP UDP

---------------------

原文:https://blog.csdn.net/oney139/article/details/8103223

---------------------

  1. TCP和UDP的区别

                                                TCP                                                                       UDP

可靠性

可靠

不可靠

连接性

面向连接

无连接

报文

面向字节流

面向报文(保留报文边界)

效率

传输效率低

传输效率高

双工性

全双工

一对一,一对多,多对一,多对多

流量控制

有(滑动窗口)

拥塞控制

有(慢开始,拥塞避免,快恢复,快重传)

传输速度

应用场合

对效率要求低,但对准确性要求高,或者要求有连接的场景

对效率要求相对高,对准确性,要求相对低,

应用示例

TCP一般用于文件传输(FTP http 对数据准确性要求高,速度可以相对慢)发送或接受邮件(pop imap SMTP 对数据准确性要求高,非紧急应用)远程登录(telnet SSH 对数据准确性有一定要求,有连接的概念)等等;

UDP一般用于即时通信(QQ聊天 对数据准确性和丢包要求比较低,但速度必须快)在线视频(rtsp速度一定要快,保证视频连续,但是偶尔画一个图片桢,还是可以接受)网络语音电话(VoIP 语音数据包一般比较小,需要告诉发送,偶尔断音或串音也没有问题)

TCP对应的协议:

  1. FTP: 定义了文件传输协议, 使用21端口。 常说某某计算机开了 FTP 服务便是启动了文件传输服务。下载文件,上传主页,都要用到 FTP 服务。
  2. Telnet: 它是一种用于远程登陆的端口, 用户可以以自己的身份远程连接到计算机上, 通过这种端口可以提供一种基于 DOS 模式下的通信服务。 如以前的 BBS 是-纯字符界面的, 支持 BBS 的服务器将 23 端口打开, 对外提供服务。
  3. SMTP: 定义了简单邮件传送协议, 现在很多邮件服务器都用的是这个协议, 用于发送邮件。如常见的免费邮件服务中用的就是这个邮件服务端口, 所以在电子邮件设置-中常看到有这么 SMTP端口设置这个栏, 服务器开放的是 25 号端口。
  4. POP3: 它是和 SMTP 对应, POP3 用于接收邮件。 通常情况下, POP3 协议所用的是 110 端口。 也是说, 只要你有相应的使用 POP3 协议的程序(例如 Fo-xmail 或 Outlook) , 就可以不以 Web 方式登陆进邮箱界面, 直接用邮件程序就可以收到邮件(如是163邮箱就没有必要先进入网易网站,再进入自己的邮-箱来收信)
  5. HTTP 协议:是从 Web 服务器传输超文本到本地浏览器的传送协议。

 

UDP对应的协议

  1. DNS: 用于域名解析服务, 将域名地址转换为 IP 地址。 DNS用的是 53 号端口。
  2. SNMP:简单网络管理协议,使用 161 号端口, 是用来管理网络设备的。 由于网络设备很多,无连接的服务就体现出其优势。
  3. TFTP(Trival File Transfer Protocal), 简单文件传输协议, 该协议在熟知端口 69 上使用 UDP服务。

 

 

TCP头部:其中ACK SYN 序号

 

Flag:从做到右:URG ACK PSH RST SYN FIN

ACK 设置为1表示前面的确认是有效的

PSH 表示要求对方在接到数据后立即请求递交给应用程序,而不是缓冲起来知道缓冲区接收满为止

RST 用于重置一个已经混乱的连接

SYN 用于建立连接的过程

FIN 用来释放一个连接

窗口大小:指定了从被确认的字节算起可以发送多少个字节。要深入理解这个域的含义,可以参看TCP 拥塞控制和慢启动算法

校验和:校验范围包括TCP头,数据报内容和概念性伪头部。概念性的伪头部有包括源IP,目的ip,TCP协议号

URG=1 :

       当URG字段被置1,表示本数据报的数据部分包含紧急信息,此时紧急指针有效。紧急数据一定位于当前数据包数据部分的最前面,紧急指针表明了紧急数据的尾部。入control+c:这个命令要求操作系统立即停止当前进程。此时,这条命令就会存放在数据包数据部分的开头,并由紧急指针标识命令的位置,并URG字段被置为1

PSH=1

       当接收放收到PSH=1的报文后,会立即将数据交付给应用程序,而不会等到缓冲区满后,在提交。一些交互式应用需要这样的功能,降低命令的响应时间。

RST=1

       当该值为 1时,表示当前TCP连接出现严重的问题,必须要释放重连。

 

暂时需要的信息:

ACK:TCP协议规定,只有ACK=1时候有效,也规定建立连接后所发送报文的ACK必须为1;

SYN(SYNchronization)用来建立连接时同步序号;当SYN=1而ACK=0时,这是一个连接请求报文;对方若是同意建立连接,则应在响应报文中使用SYN=1,ACK=1.因此SYN置1,就表示连接请求报文或连接接收报文。

FIN:即完成;用来释放一个连接,当FIN=1,表明此报文段的发送方的数据已经发送完毕,并要求释放连接。

 

 

三次握手过程:

 

 

 

 

 

 

 

 

下面是四次挥手释放连接的过程

当客户A 没有东西要发送时就要释放 A 这边的连接,A会发送一个报文(没有数据),其中 FIN 设置为1,  服务器B收到后会给应用程序一个信,这时A那边的连接已经关闭,即A不再发送信息(但仍可接收信息)。  A收到B的确认后进入等待状态,等待B请求释放连接, B数据发送完成后就向A请求连接释放,也是用FIN=1 表示, 并且用 ack = u+1(如图), A收到后回复一个确认信息,并进入 TIME_WAIT 状态, 等待 2MSL 时间。

为什么要等待呢?

为了这种情况: B向A发送 FIN = 1 的释放连接请求,但这个报文丢失了, A没有接到不会发送确认信息, B 超时会重传,这时A在 WAIT_TIME 还能够接收到这个请求,这时再回复一个确认就行了。(A收到 FIN = 1 的请求后 WAIT_TIME会重新记时)

另外服务器B存在一个保活状态,即如果A突然故障死机了,那B那边的连接资源什么时候能释放呢?  就是保活时间到了后,B会发送探测信息, 以决定是否释放连接。

 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值