网络基础理论(三)TCP/UDP协议

网络(二)IP地址和MAC地址及传输方式

网络(一)协议的定义及七层、五层模型

1.UDP协议

1.1

TCP和UDP是传输层两个主要协议。在IP首部中有一个协议字段,用来标识网络层(IP)的上一层所采用的是哪一种传输层协议。根据这个字段的协议号,就可以识别IP传输的数据部分究竟是TCP的内容还是UDP的内容。
在通信过程中,还有一个特别重要的,就是端口号。端口号用来识别同一台计算机中进行通信的不同应用程序,因此也被称为程序地址。在TCP、UDP通信中,通常采用5个信息来识别一个通信。即“源IP地址、目标IP地址、协议号、源端口号、目标端口号”。只有其中某一项不同,则被认为是其他通信。端口号由其使用的传输层协议决定,因此,不同的传输协议可以使用相同的端口号。

1.2UDP

UDP主要用于对高速传输和实时性有较高要求的通信或广播通信,不具备可靠性的数据报协议,利用IP提供面向无连接的通信服务。它虽然可以确保发送消息的大小,却不能保证消息一定会到达。
UDP首部格式如下:
在这里插入图片描述
16位UDP长度,表示整个数据报(UDP首部+UDP数据)的最大长度。如果校验和(用来数据校验用)出错,就会直接丢弃。
UDP的5个特性:1.无连接(没有建立连接就发数据)、2.不可靠(没有类似TCP保证数据传输的安全机制)、3.面向数据报(UDP原样发送,不拆分,不合并;只能一次接收,系统级别操作,调用系统函数)、4.没有发送缓冲,有接收缓冲区、5.数据最大64K。
基于UDP的应用层协议:NFS网络文件系统、TFTP简单文件传输协议、DHCP动态主机配置协议、DNS域名解析协议、也包括你自己写UDP程序时自定义的应用层协议
经常用在几下几个方面:1.包总量较少的通信;2.视频、音频等多媒体即时通信;3.限定于LAN等特定网络中的应用通信;4.广播通信(广播、多播)

2.TCP协议

TCP用于在传输层有必要实现可靠传输的情况,是面向连接的、可靠的流协议。TCP提供可靠性传输,充分的实现了数据传输时各种控制功能,可以进行丢包时的重发控制,还可以对次序乱掉的分包进行顺序控制。TCP作为一种面向有连接的协议,只有在确认通信对端存在时才会发送数据,从而可以控制通信流量的浪费。
连接—是指各种设备、线路、或网络中进行通信的两个应用程序为了相互传递消息而专有的、虚拟的通信线路,也叫虚拟线路。
TCP首部格式如下:
在这里插入图片描述
6位标志位:
URG: 紧急指针是否有效
ACK: 确认号是否有效
PSH: 提示接收端应用程序立刻从TCP缓冲区把数据读走
RST: 对方要求重新建立连接; 我们把携带RST标识的称为复位报文段
SYN: 请求建立连接; 我们把携带SYN标识的称为同步报文段
FIN: 通知对方, 本端要关闭了, 我们称携带FIN标识的为结束报文段

2.1通过序列号和确认应答提高可靠性(安全机制)

序列号是按顺序给发送数据的每一个字节都标上号码的编号。序列号不会从0或1开始,而是在建立连接时由计算机生成的随机数作为初始值,通过SYN包发送给接收端主机。在TCP中,当发送端的数据到达接收主机时,接收端主机会返回一个已收到消息的通知,这个消息叫做确认应答(ACK)。否定确认应答(NACK)。TCP通过肯定的确认应答ACK来实现可靠性传输。
发送端的消息,接收端必须进行确认应答
在发送时,携带数据序号;确认回复时,携带确认序号

2.2超时重传机制(安全机制)

重发超时是指在重发数据之前,等待确认应答到来的那个特定时间间隔。如果超过了这个时间仍未收到确认应答,发送端将会进行数据重发。
1.没有收到确认应答的原因—数据报丢了;或者返回的确认应答在途中丢失了
2.如何确定重发超时的具体时间?
在BSD的Unix以及Windows系统中,超时都以0. 5秒为单位进行控制,因此,重发超时都是0.5秒的整数倍。偏差的最小值也是0. 5秒,因此最小的重发时间至少是1秒。不过,由于最初的数据包还不知道往返时间,所以其重发超时一般设置为6秒左右。
数据被重发之后若还是收不到确认应答,则进行再次发送。此时,等待确认应答的时间将会以2倍、4倍的指数函数延长。
此外,数据也不会被无限、反复地重发。达到一定重发次数之后,如果仍没有任何确认应答返回,就会判断为网络或对端主机发生了异常,强制关闭连接。并且通知应用通信异常强行终止。

3.连接管理机制(安全机制)

一个连接的建立和断开,正常过程至少需要来回发送7个包才能完成。
在这里插入图片描述
三次握手、四次挥手的处理过程:
三次握手:
(1)主机A发送SYN到主机B,请求建立A到B的连接。主机A的状态为syn_sent.
(2)主机B回复ACK+SYN,请求建立B到A的连接,主机B的状态为syn_rcvd
(3)主机A回复第2步SYN的ACK。主机A的状态为establish,建立A到B的连接。
主机B收到第3步的数据报,建立B到A的连接,主机B状态为establish
四次挥手:
(1)主机A发送FIN到主机B,请求关闭A到B的连接
(2)主机B回复ACK,主机B状态为close_wait
(3)主机B发送FIN到主机A,请求关闭B到A的连接
(4)主机A回复ACK(第3步的FIN),状态为time_wait。
主机B接收到第4步的数据报,状态设为closed
主机A经过超时等待时间之后,状态设为closed

2.4滑动窗口机制(效率机制)

1.为每个数据包进行确认应答的缺点是,包的往返时间越长,网络的吞吐量会越差。没有滑动窗口,网络数据传输是串行的方式,主机发送数据存在空闲时间。利用窗口可以解决效率问题,类似于多线程的方式,是并发的,可以同时发送多个数据报。
2.窗口大小:指无需等待确认应答而可以继续发送数据的最大值。操作系统内核为了维护滑动窗口,需要使用大量的缓冲区,通过对多个段同时进行确认应答的功能。窗口越大,网络的吞吐量越高。
3.在窗口控制中,如果出现丢失的情况怎么办?
a.确认未能返回的情况
在这种情况下,数据已经到达对端,是不需要再进行重发的。即使某些确认应答丢失也无需重发。因为可以通过下一个确认应答进行确认。
b.某一些报文段丢失的情况
在窗口比较大,又出现报文段丢失的情况下,同一个序号的确认应答将会被重复不断地返回。而发送端主机如果连续3次收到同一个确认应答,就会将其对应的数据进行重发。(也叫高速重发机制)

2.5流量控制(安全机制)

指让发送端根据接收端的实际接收能力控制发送的数据量。具体操作是,接收端主机向发送端主机通知自己可以接收数据的大小。该大小被称为窗口大小,由接收端主机决定的。
在TCP首部中,专门有一个字段用来通知窗口大小。接收主机将自己可以接收的缓冲区大小放入这个字段中通知给发送端。值越大,吞吐量越高。
在应用中,发送端会时不时的发生一个叫做窗口探测的数据段,此数据段仅含一个字节以获取最新的窗口大小信息。

2.6拥塞控制(安全机制)

发送端不清楚当前网络状态下, 贸然发送大量的数据,会造成网络拥堵。为防止该问题,TCP引入慢启动机制, 先发少量的数据探探路, 了解当前的网络状态, 再决定按照多大的速度传输数据。
为了在发送端调节所要发送数据的量,定义了叫“拥塞窗口”的概念。在慢启动时, 定义拥塞窗口大小为1个数据报发送数据,每次收到一个ACK应答, 拥塞窗口的值加1。每次发送数据包的时候, 将拥塞窗口和接收端主机反馈的窗口大小做比较, 取较小的值作为实际发送的窗口大小
拥塞窗口增长速度, 是指数级别的。当拥塞窗口超过这个阈值的时候, 不再按照指数方式增长, 而是按照线性方式增长。

2.7延迟确认应答(效率机制)

接收端收到数据如果每次都立即响应,回复ACK确认应答的话,可能会返回一个较小的浏览控制窗口,因为刚接收完数据,缓冲区已经满了,会影响滑动窗口的大小,降低了网络的利用率。
解决:收到数据以后,等待一段时间,让接收端程序接收处理缓冲区数据再返回ACK确认应答。

2.8捎带应答机制(效率机制)

接收端确认应答和回执数据可以通过一个包进行发送。通过这种机制,可以使收发的数据量减少。
但如果没有启用延迟确认应答就无法实现捎带应答。

TCP的特性:1.有连接的可靠协议;2.在保证可靠的同时尽可能提高性能效率。可靠安全机制有:检验和、序列号、确认应答、重发机制、连接管理、流量控制、拥塞控制 效率机制有:滑动窗口、延迟应答、捎带应答
3.面向字节流。创建一个TCP的socket, 同时在内核中创建一个 发送缓冲区 和一个 接收缓冲区;由于缓冲区的存在, TCP程序的读和写不需要一一匹配
基于TCP应用层协议:HTTP、HTTPS、SSH、Telnet、FTP、SMTP、也包括你自己写TCP程序时自定义的应用层协议

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值