计算机网络----------网络传输

引言

    在计算机网络中,用的最多的就数TCP和UDP。两者的作用都是供网络进行传输的协议,而两者在原理上又有所不同。简而言之,TCP是面向连接的数据流传输,而UDP是非面向连接的、不可靠的传输方式。

七层网络模型(OSI)

    物理层 : 中继器、集线器所在层。通过媒介传输Bit数据,确定电气、机械等规范。

    数据链路层 : 网桥、交换机所在层。将Bit组装成一帧帧,实现点到点的传递。

    网络层 : 即路由器所在层,主要协议有IP、ARP、RARP等。将数据包在网络间传输。

    传输层 : TCP协议、UDP协议所在层。提供端到端的可靠报文传递和错误恢复。

    会话层 : NFS、RPC。建立、管理、终止会话。

    表示层 : ASII、JPEG。对数据进行翻译、加密、压缩。

    应用层 : FTP、DNS、HTTP、SMTP,我们常见的协议都在应用层。通过OSI模型,最后实现不同应用的手段。

TCP

    TCP传输单位称为TCP报文段。相比UDP,TCP更加注重数据的安全性、可靠性,TCP保证了在传输过程中的不错、不乱、不丢。虽然TCP可靠,但是在数据传递时的确认机制、重传机制、拥塞控制却要花费更多的时间以及资源。并且TCP的三次握手、四次挥手机制容易被人利用,进而实现网络攻击。

    TCP对应的协议:

    1.文件传输协议FTP,使用了21端口。

    2.邮件传输协议SMTP,实现邮件的 收发,使用了25端口。

    3.超文本传输协议,也就是我们上网经常使用到的协议。默认为80端口。 

    TCP协议具备拥塞控制机制,这个机制是为了防止过多的数据载入当前的网络中,因为过多的数据会使网络中的路由器、链路过载。常用的解决办法有慢开始、拥塞控制、快重传、快恢复

UDP

    UDP传输单位称为用户数据报。UDP支持一对一,一对多,多对一,多对多的交互通信。与TCP不同,UDP不会理会传输的可靠性,它只会尽力完成交互。UDP只进行最基本的校验和纠错,所以像传输视频时,可以使用UDP。因此,UDP被攻击者利用的漏洞就少了许多

    UDP对应的协议:

    1.DNS,用于域名解析,将域名解析成IP地址,使用的是53端口。

    2.简单文本传输协议TFTP,该协议在69端口上使用UDP服务。

使用场景

    TCP:当对网络的通信有质量要求时,首选TCP,这样可以将这个数据无误地传输给对方。比方文件传输、浏览器的使用。

    UDP:1.视频、语音此类要求实时性的多媒体通信;2.数据包总量较少的通信,如DNS、TFTP;3.广播通信,多播通信。

TCP协议如何保证可靠性传输?

    在传输时,TCP通过序列号、校验和、确认应答信号、重发控制、窗口控制、流量控制、拥塞控制等方式实现可靠性。

    校验和:TCP保持首部和数据的校验和,如果接收端的校验和和发送端的不同,TCP则会丢弃这个报文。

    流量控制:在TCP连接中,会有一段固定大小的缓冲段,这意味着只允许发送端发送接收端能够接收的数据量。此外,当接收的一方来不及处理发送端传输过来的数据,则会提示发送端降低速率,防止包丢失。

    拥塞控制:当网络发送堵塞时,则会减少数据的发送。

    超时重传:当TCP发送出一个报文后,会启动一个定时器,等待接收端确认收到这个报文。若超过规定时间没有收到应答,则会重新发送一次。

握手挥手机制

三次握手

    第一次握手,客户端发送包到服务器,并等待服务器确认,并进入准备发送状态。

    第二次握手,服务器收到客户端发来的包,同时返回一个应答包给客户端,并进入准备接收状态。

    第三次握手,客户端收到来自服务器的应答包后,发送自己的一个应答包,此包发送完毕后开始建立传输,完成三次握手。

四次挥手

    第一次挥手,主动关闭的那一方首先发送一个FIN,用来关闭主动方到被动方的数据传输。

    第二次挥手  ,被动关闭方收到FIN后,会发送一个应答回去,表明已经收到关闭请求。但是被动方需要传输完数据才能够结束连接。

    第三次挥手,被动关闭的那一端发送FIN给主动方,告诉对方这边也已经发送完数据了。

    第四次挥手,主动方收到来自被动方的FIN后,发送应答给被动方,确认已经收到。发送完毕后则结束连接。

结语

    三次握手的机制是为了防止已经失效的连接请求,突然又发送给服务器。

    比方说某个网络节点发生滞留,导致请求延迟到本次连接释放后才传输到另一端。假设A发送给B连接请求,但是因为网络延迟,B暂时没有收到;此时A又发送请求,B收到后两者建立连接,正常传输数据。

    随后B又收到了之前因为前段时间网络滞留没有接收到的请求,此时B表明同意建立连接。但是这个时候,这个请求对A来说已经过时,即A不会发送数据给B,但是B却会一直等待A传输数据。造成资源上的浪费

 

以上内容如有错误,欢迎指出。谢谢!
 

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

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值