`
zhoujianghai
  • 浏览: 434340 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

简述TCP和UDP协议

阅读更多

一。传输层的主要功能是什么?

 


分割并重新组装上层提供的数据流,为数据流提供端到端的传输服务。



 

二。传输层如何区分不同应用程序的数据流?

 


因为,对应传输层而言,它只需要知道目标主机上的哪个服务程序来响应这个程序,而不需要知道这个服务程序是干什么的。因此,我们只需要能够抽象的表示出来这些应用程序和服务程序即可。我们使用端口号来抽象标识每个网络程序。

 

因此:在同一IP地址(同一个目标主机)上不同的端口号是两个不同的链接。IP地址和端口号用来唯一的确定网络上数据的目的地。



 

三。传输层有哪些协议?

 


传输层的两大协议:TCP(传输控制协议)UDP(用户数据包协议)
TCP是一个可靠的面向链接的协议,UDP是不可靠的或者说无连接的协议。
可以用打电话和发短信来说明这种关系:

UDP就好似发短信,只管发出去,至于对方是不是空号(网络不可到达)能不能收到(丢包)等并不关心。

TCP好像打电话,双方要通话,首先,要确定对方不是开机(网络可以到达),然后要确定是不是没有信号(),然后还需要对方接听(通信链接)。



 

四。什么是UDP协议?


 

UDP为应用程序提供的是一种不可靠的、无连接的分组交付,因此,UDP报文可能会出现丢失、乱序、重复、延时等问题。


五。什么是TCP协议?


 

传输控制协议TCP是一个面向链接的、可靠的通信协议。

1. 在开始传输前,需要进行三次握手建立链接
2. 
可靠性:在传输过程中,通信双方的协议模块继续进行通信
3. 
通信结束后,通信双方都会使用改进的三次握手来关闭链接


六。TCP协议三次握手


 

 整个过程是怎么样的呢?逻辑上我们可以这么理解建立链接的过程:

 有两台主机A和B:


1.SYN:seq=X;

1.1 ATCP程序,为这个链接分配一个端口(设为9090)。
1.2
同时逻辑上的将TCP连接的状态设置为:正在连接。(通过在链接状态表中添加一条记录,记录中状态为:正在连接)

 

1.3 同时,随机生成一个初始序列号X,生成一个TCP包,将初始化序列号X设置为TCP中的序列号,发送给主机B

 

2.SYN:seq=Y ACK:ack=X+1;

2.1 BTCP程序收到该数据包,查询9091端口状态,如果可以链接。
2.2
同样的,在逻辑上的将TCP连接的状态设置为:正在连接
2.3
同时,随机生成一个初始化序列号Y,根据接收的序列号X,生成应答号X+1,生成一个TCP包,将序列号和应答号分别设置到TCP包头中,将TCP数据包发给主机A

 

3.SYN:seq=X+1 ACK:ack=Y+1.

3.1  A上的TCP程序接收到数据包,查询9090端口状态。
3.2
根据收到的SYN:seq=Y;ACK:ack=X+1; 封装一个TCP SYN:seq=x+1;ACK:ack=Y+1;发送给主机B。同时,TCP程序将链接状态表中该条记录状态设置为已连接。
3.3
主机B收到数据包,TCP程序将链接状态表中该条记录状态设置为已连接。

 

至此,一个TCP链接建立(三次握手)完成。
我们可以看到:
第一:传送的都是IP数据包,其实只是将收到的数据包交给TCP程序处理。
第二:链接状态,只是TCP程序中的一个逻辑状态。


 

七:三次握手的目的是什么?


TCP是面向链接的,在面向链接的环境中,开始传输数据之前,在两个中端之间必须先建立一个链接。建立链接的过程可以确保通信双方在发送应用程序数据包之前,都已经准备好了传送和接收数据。并且使通信双方统一了初始化序列号。



八:TCP如何保证可靠性?


 

在传输过程中,通信双方的协议模块继续进行通信,从而确保了传输的可靠性。
针对乱序:在通过三次握手进行链接时,序列号被初始化。在传输过程中,TCP继续使用这个序列号来标记发送的每一个数据段,没传送一个数据段,序列号加一。接收方依据序列号重装收到的数据段。
针对丢包:在传输过程中,接收方收到一个数据段后,会用ACK应答码向发送端回复一个IP包进行应答,确认号ACK用来告诉发送端哪些数据包已经成功接收,发送方对未被应答的报文段提供重传
针对重复:接收端收到数据段后,查看序列号,如果已经成功接收改数据包,则丢弃后面这个数据段。
针对延时:延时造成的第一个问题,就是数据包达到接收端时乱序。
当延时严重时,接收端一直未收到数据段,则不会回复ACK,发送端认为丢包,重发。


 

九:什么是预期确认?什么是肯定确认与重新传输?哪些情况会重传?


1.确认号ACK会告诉发送端哪些数据段已经成功接收,并且确认号会向发送端指出接收端希望收到的下一个序列号。即,确实号ACK为上个数据序列号+1,这种机制称为预期确认


2.
为了提高效率,我们在发送端,将数据段保存在缓冲区中,直道发送端收到来自接收端的确认号。这种机制被称为肯定确认与重新传输


3.
发送端在给定时间间隔内收不到那个数据段的应答时,发送端就会重传那个数据段。
情况1:网络延时/环路,数据段丢失
情况2:网络延时,数据段推迟到达
情况3:数据段成功到达,应答因为1.2不能达到。


 

 十:TCP中,序列号和应答号有哪些作用?


1.  依靠序列号重组数据段

2.  依靠数据包消除网络中的重复包

3. 依靠序列号和应答号进行差错重传,提高了TCP的可靠性



十一:UDP的开销很小,具体是指什么?


 

1.因为UDP是无连接的。在传输数据之前,不需要进行复杂的三次握手来建立连接。
2.在传输数据时没有协议间通信流量(确认信号),也不需要浪费不必要的处理时间(接收确认信号再发一下)。
3
传输结束后,也不用再用改进的三次握手来端口连接



十二:UDP数据包、TCP数据包大小如何确认?


 

1.  无论TCP还是UDP数据包,都需要交给Internet层封装为IP包,而一个IP包,包头中的长度位为16位,所以IP包最大为216方,             即6553564KB还需要减去各种包头长度)。

2.     TCP因为面向流,且可以凭借序列号对大文件进行分段和重组,因此,TCP可以用来传输较大的文件。而UDP,如果要传输大于64KB的数据, 则需要自己在应用层进行差错控制

3.        为了提高传输效率和减少网络通信量(协议间的通信),TCP也会一次传输足够多的数据

4.        因为MTU的存在,TCP包和UDP包不是越大越好。(在路由中分包,在接收端重组,加大路由与接收端负担,增大丢包概率。分组丢失,整个数据包重传。)



十三:UDP适用哪些环境?TCP适用哪些环境?


 

适合UDP的环境:
1.
高效可靠的网络环境中(不需要考虑网络不好导致的丢包、乱序、延时、重复等问题),因为UDP是无连接的服务,不用消耗不必要的网络资源(TCP中的协议间通信)和处理时间(预期确认需要的时间),从而效率要高的多。
2.
轻权通信中,当需要传输的数据量很小(可以装在一个IP数据包内)时。如果我们使用TCP协议,那么,先建立连接,一共需要发送3IP数据包,然后数据传输,1IP数据包,产生一个确认信号的IP包,然后关闭连接,需要传输5IP数据包。使用TCP协议IP包的利用率为1/10。而使用UDP,只需要发送一个IP数据包。哪怕丢包(服务不成功),也可重新申请服务(重传)。


注:而且无论UDP还是TCP,传输的都是IP数据包。当网络环境不好导致丢包时,无论TCP还是UDP都会丢包,这是没有区别的。(如果考虑发送丢包,那么TCP效率更低),只是使用TCP,当连接建立成功后,TCP程序会进行可靠性控制。



 

UDP很适合这种客户机向服务器传送简单服务请求的环境。此类应用层协议包括TFTP , SNMP , DNS ,DHCP等。
3.对实时性要求很强的通信中:在诸如实时视频直播等对实时性要求很高的环境中,从而允许一定量的丢包的情况下(直播比赛,前面丢失的包,重传出来已经意义不大了),UDP更适合。(可以根据具体需要通过应用层协议提供可靠性,不用像TCP那么严格。)

 

适合TCP协议的环境:

当网络硬件失效或者负担太重时,数据包可能就会产生丢失、重复、延时、乱序的现象。这些都会导致我们的通信不正常的时候。如果让应用程序来担负差错控制的工作,无疑将给程序员带来许多复杂的工作,于是,我们使用独立的通信协议来保证通信的可靠性是非常必要的。 

 


 

 

分享到:
评论

相关推荐

    Socket编程-即时通讯工具-基于TCP和UDP协议-包括服务器端和客户端

    基于TCP和UDP协议实现的一个即时通讯工具,具体功能包括: 工具包括服务器端和客户端; 具备用户注册、登录、找回密码功能(基于TCP协议); 两个用户如果同时在线,采用点到点通信方式进行聊天,信息不需要通过...

    TCP协议和UDP协议的异同点是什么

    TCP协议和UDP协议的异同点,是网络安全系类的

    udp,tcp端口扫描

    网络编程,最简单的udp,tcp扫描程序,在mfc平台下编译通过,单线程。

    基于Socket的UDP和TCP编程介绍

    本文详细介绍了基于Socket的UDP和TCP的编程原理和方法,适合于那些对UDP/TCP的socket编程不太清楚的同学

    TCPI/P协议族及OSI模型

    这是一个TCPIP协议族的教程,OSI七层模型,简单易用,TCP/IP四层模型,TCP/IP五层模型,看了能很快的进入学习状态!

    电子商务计算机网络安全技术

    1、简述TCP和UDP的主要特点和应用场合。 2、如果使用UCP协议进行数据传输,那么( )层协议必须承担可靠性方面的工作。 3、TCP协议是面向连接的协议,提供连接的功能是(1);采用(2)技术实现可靠数据流的传输。...

    网络协议大全

    TCP和UDP协议 DHCP数据报文 内部网关协议和外部网关协议 802.11协议族 安全协议之:RADIUS IPv4协议(互联网协议) TCP-传输控制协议 MDLC协议 FTP协议的分析和扩展 TFTP:简单文件传输协议 ADSL使用中常见...

    计算机网络常见面试题

    5、请简述一下TCP的三次握手和四次挥手协议? 6、TCP和UDP相关的协议分别有哪些? 7、TCP和UDP有什么区别? 8、Post和Get有什么区别? 9、在浏览器中输入www.baidu.com后执行的全部过程? 10、列举几种常见的协议,...

    Python313道企业面试题集锦(附答案).pdf

    85.为何基于 tcp 协议的通信比基于 udp 协议的通信更可靠? 86.什么是 socket?简述基于 tcp 协议的套接字通信流程。 87.什么是粘包? socket 中造成粘包的原因是什什么? 哪些情况会发生粘包现 象?. 88.IO 多...

    网安面试必考题合集及答案(PDF资料)

    10、TCP和UDP协议区别 11、多线程、多进程区别 12、NTLM原理 13、什么是由间人攻击 14、防御中间人攻击的方案 15、描述 tcp/udp的区别及优劣,及其发展前景 16、公司网络安全具体指什么 17、如何判断计算机可能已经...

    [详细完整版]互联网试题.doc

    简述TCP与UDP的不同点 面向连接服务的特点: 面向连接服务的数据传输过程必须通过连接建立、连接爱护与开释连接的三个过程 ; 面向连接服务的在数据传输过程中,各分组能够不携带目的结点的地址; 面向连接服务的...

    浅谈TCP/IP的服务端和客户端的工作原理

    **TCP/IP协议集和OSI层 TCP通信流程图 本人作为一个初学者,在这里只谈谈自己的一点点小理解。 服务端 第一 套接字的创建,其实有了解过udp的人应该知道这两者在一些方面还是差不多的,你需要创建一个socket()对象 ...

    《计算机网络原理》课程实验指导书.doc

    如果希望在Microsoft Windows下通过TCP和UDP协议建立网络应用程序,则需要使用Winsock套接口编程技术. 套接口,就是一个指向传输提供者的句柄.Win32中,套接口不同于文件描述符,所以它 是一个独立的类型——SOCKET....

    计算机网络复习题

    4、什么叫流量控制,试简述TCP的流量控制机制,UDP协议中有流量控制吗? 答: (1)为了防止快速的发送设备发出的数据过多,导致慢速的接收设备处理不过来而发生大量数据丢失(淹没慢速的接收设备)所采取的限制措施...

    计算机网络原理考试简答总结

    一:简述osi七层模型和tcp四层模型其中的一个 二:CiDR地址块的划分划分成若干个子网 三:什么是socket 网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。 四:简答tcp和udp的...

    防火墙实验报告.doc

    例如,防火墙可以限制 TCP、UDP协议及TCP协议允许访问端口范围,当不符合条件时 ,程序将询问用户或禁止操作,这样可以防止恶意程序或木马向外发送、泄露主机信息 。并且可以通过配置防火墙IP规则,监视和拦截恶意...

    c++面试题基础分享.doc

    14.TCP和UDP有什么区别 15.STL库用过吗?常见的STL容器有哪些?算法用过哪几个 16.同步IO和异步IO的区别 17.说下你对内存的了解 18.C++文件编译与执行的四个阶段 19.extern关键字的作用 20.#define和const的...

    java抢票软件源码-interview:java面试题整理

    tcp,udp区别; 解答: 二 java知识点 java基础 开发中Java用了比较多的数据结构有哪些 解答: Java 中的排序工具有哪些;有什么区别? Collections.sort算法调用的是合并排序。 Arrays.sort() 采用了2种排序算法 -- ...

    华南理工网络课程2021(嵌入式控制系统)平时作业.docx

    支持TCP/IP协议及其他协议,提供 TCP/UDP/IP/PPP协议支持及统一的MAC访问层接口,提供强大的网络功能; 嵌入式操作系统的用户接口通过系统的调用命令向用户程序提供服务; 嵌入式系统一旦开始运行就不需要用户过多...

    史上最全java面试,103项重点知识,带目录

    81. 简述 tcp 和 udp的区别? 40 82. tcp 为什么要三次握手,两次不行吗?为什么? 40 84. OSI 的七层模型都有哪些? 42 85. get 和 post 请求有哪些区别? 42 86. 如何实现跨域? 43 87.说一下 JSONP 实现原理? 49...

Global site tag (gtag.js) - Google Analytics