快速回顾计算机网络(主要是TCP和UDP)

首先,回顾一下OSI的7层:

1物理层,比特流的透明传输
2数据链路层,通过差错控制和流量控制,使有差错的物理线路变为无差错的数据连接。MAC层网络介质的访问控制。LLC差错校验、流量控制、链路控制。交换机
3网络层,通信子网的最高层,向资源子网提供服务。路由选择路由选择路由选择。路由器
4传输层,传送报文,报文分割。
5会话层,向表示层提供建立和使用连接的方法,会话。建立和断开连接,连接时长。
6表示层,处理用户信息的表示,编码,数据格式转换,加解密。
7应用层,ftp,telnet等

看了一部分面经,技术岗普遍会问到TCP和UDP的问题。这里先解释一下TCP和UDP的特点,再比较和总结一下应用场景。

一点点不重要的信息作为引入:

TCP在IP报文的协议号是6。
UDP在IP报文的协议号是17。
在第二层的数据,我们把它叫Frame(数据帧),在第三层的数据叫Packet(数据包),第四层的数据叫Segment(数据段)。

 

TCP

 

传输控制协议,传输效率低,可靠性强。

TCP头一般占20个字节。当选项字段给出首部中32 bit字的数目,这个字段占4bit(最多能 表示15个32bit的的字,即4*15=60个字节的首部长度),因此TCP最多有60字节的首部,后面的填充字段负责填充。

TCP头部包括:

  1. 源端口、目的端口。用于标记进程。分别占用16位,表示源端口号和目的端口号;用于区别主机中的不同进程, 而IP地址是用来区分不同的主机的,源端口号和目的端口号配合上IP首部中的源IP地址和目的IP地址就能唯一 的确定一个TCP连接;
  2. 序号,它表示在这个报文段中的的第一个数据 字节在数据流中的序号;主要用来解决网络报乱序的问题;
  3. 确认序列号,包含发送确认的一端所期望收到的下一个序号,因此,确认序号应 当是上次已成功收到数据字节序号加1。

TCP负责发现传输的问题,一有问题就发出信号,要求重新传输,直到所有数据安全正确地传输到目的地。而IP是给因特网的每一台电脑规定一个地址。TCP就是特别负责,所以占用的资源会多一点,传的会慢一点,但是可靠就是它的优点。

 

建立连接的三次握手,SYN同步占主导,可以理解为:

a ->我的开始序号-> b

a <-我的开始序号,你的看到了下一个<- b

a -> 我也看到你的了下一个-> b

交换了开始序号之后,连接成功。

 

断开连接的四次挥手,FIN结束占主导,同样可以理解:

a ->我的最后一个序号,你的下一个-> b

a <-了解了下一个<- b

a <-我的最后一个序号<- b

a -> 了解了下一个-> b

交换了结束序号之后,都不会再收到对方的下一个字节,连接关闭。

 

UDP

用户数据报协议,适用于传输可靠性要求不高,数据量小的数据。

UDP头占8个字节

UDP是面向报文的。发送方的UDP对应用程序交下来的报文,在添加首部后就向下交付给IP层。既不拆分,也不合并,而是保留这些报文的边界,因此,应用程序需要选择合适的报文大小。

 

比较

1、TCP面向连接(如打电话要先拨号建立连接);UDP是无连接的,即发送数据之前不需要建立连接
2、TCP提供可靠的服务。也就是说,通过TCP连接传送的数据,无差错,不丢失,不重复,且按序到达;UDP尽最大努力交付,即不保证可靠交付
3、TCP面向字节流,实际上是TCP把数据看成一连串无结构的字节流;UDP是面向报文的,UDP没有拥塞控制,因此网络出现拥塞不会使源主机的发送速率降低(对实时应用很有用,如IP电话,实时视频会议等)
4、每一条TCP连接只能是点到点的;UDP支持一对一,一对多,多对一和多对多的交互通信
5、TCP首部开销20字节;UDP的首部开销小,只有8个字节
6、TCP的逻辑通信信道是全双工的可靠信道,UDP则是不可靠信道

7、TCP易受DOS、DDOS、CC等攻击;UDP易受UDPflood等攻击

 

一些应用场景

什么时候应该使用TCP: 当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,比如HTTP、HTTPS、FTP等传输文件的协议,POP、SMTP等邮件传输的协议。 在日常生活中,常见使用TCP协议的应用如下: 浏览器,用的HTTP;FlashFXP,用的FTP; Outlook,用的POP、SMTP; Putty,用的Telnet、SSH;QQ文件传输  

什么时候应该使用UDP: 当对网络通讯质量要求不高的时候,要求网络通讯速度能尽量的快,这时就可以使用UDP。 比如,日常生活中,常见使用UDP协议的应用如下: QQ语音 QQ视频 TFTP 

 

TCP和UDP之上的应用层协议

TCP对应的协议:

(1) FTP:定义了文件传输协议,使用21端口。

(2) Telnet:一种用于远程登陆的端口,使用23端口,用户可以以自己的身份远程连接到计算机上,可提供基于DOS模式下的通信服务。

(3) SMTP:邮件传送协议,用于发送邮件。服务器开放的是25号端口。

(4) POP3:它是和SMTP对应,POP3用于接收邮件。POP3协议所用的是110端口。

(5)HTTP:是从Web服务器传输超文本到本地浏览器的传送协议。

 

UDP对应的协议:

(1) BOOTP(Boot Protocol,启动协议) ,应用于无盘设备

(2) SNMP:简单网络管理协议,使用161号端口,是用来管理网络设备的。由于网络设备很多,无连接的服务就体现出其优势。

(3) TFTP(Trival File Tran敏感词er Protocal),简单文件传输协议,该协议在熟知端口69上使用UDP服务。

(4)NFS(网络文件系统) 

(5)SNMP(Simple Network Management Protocol, 简单网络管理协议) ,用于网络信息的收集和网络管理

(6)DHCP 自动分配网址

(7)NTP(Network Time Protocol,网络时间协议) ,用于网络同步

 

DNS既基于TCP,又基于UDP。在进行区域传输的时候使用TCP协议,其它时候则使用UDP协议;
  DNS的规范规定了2种类型的DNS服务器,一个叫主DNS服务器,一个叫辅助DNS服务器。在一个区中主DNS服务器从自己本机的数据文件中读取该区的DNS数据信息,而辅助DNS服务器则从区的主DNS服务器中读取该区的DNS数据信息。当一个辅助DNS服务器启动时,它需要与主DNS服务器通信,并加载数据信息,这就叫做区传送(zone transfer)。
为什么既使用TCP又使用UDP?
  首先了解一下TCP与UDP传送字节的长度限制,UDP报文的最大长度为512字节,而TCP则允许报文长度超过512字节。当DNS查询超过512字节时,协议的TC标志出现删除标志,这时则使用TCP发送。通常传统的UDP报文一般不会大于512字节。


Socket,网络层的ip地址可以唯一标识网络中的主机,而传输层的“协议+端口”可以唯一标识主机中的应用程序(进程)。这样利用三元组(ip地址,协议,端口)就可以标识网络的进程了,网络中的进程通信就可以利用这个标志与其它进程进行交互。

posted on 2019-03-29 22:41  pumprain  阅读(117)  评论(0)    收藏  举报