`
zhoujianghai
  • 浏览: 439134 次
  • 性别: 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协议的环境:

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

 


 

 

分享到:
评论

相关推荐

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

    TCP 协议和 UDP 协议的异同点 TCP 协议和 UDP 协议是两种常见的传输层协议,它们都是为了实现数据传输任务的,但它们之间存在着许多不同点。下面我们将对 TCP 协议和 UDP 协议的异同点进行详细的分析。 首先,TCP ...

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

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

    udp,tcp端口扫描

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

    TCPI/P协议族及OSI模型

    总结一下,本教程涵盖了TCP/IP协议族的主要概念,包括TCP、UDP、SNMP等协议,以及OSI和TCP/IP模型的层次结构。同时,介绍了数据的封装与解封装过程,网络层的IP、ICMP协议,数据链路层的ARP协议,以及网络分析工具...

    程序模拟UDP协议以及实验报告

    1. **背景介绍**:简述UDP协议的基本概念和应用领域。 2. **实验目的**:明确通过模拟UDP协议要达到的学习目标,例如理解协议的工作原理,提高编程技能等。 3. **实验设备和环境**:列出使用的开发工具、操作系统...

    [Java2核心技术(7th,卷1)

    书中会简述TCP和UDP协议,以及如何使用Java进行网络编程。 总的来说,《Java2核心技术(7th,卷1)》是Java初学者和进阶者必备的参考书,通过学习,读者不仅可以掌握Java语言的基础,还能了解到Java平台的高级特性,为...

    uC/OS-II下TCP/IP协议栈的实现

    LwIP支持多网络接口下的IP转发、ICMP协议、实验性扩展的UDP协议、TCP协议的阻塞控制、RTT估算、快速恢复和快速转发等功能,并提供专门的内部回调接口(Raw API)以及可选择的Berkeley接口API(在多线程情况下)。...

    TCPIP协议的FLash讲解动画(共15节)

    14. **网络安全与加密**:简述TCP/IP的安全问题,如ARP欺骗、IP欺骗,以及SSL/TLS协议在保护通信安全上的作用。 15. **实际应用示例**:通过实例展示TCP/IP在实际网络环境中的应用,例如网页浏览和文件下载过程。 ...

    基于Socket的UDP和TCP编程介绍

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

    TCP/IP 详解卷一:协议

    4. **UDP协议简述**:作为另一种常用的传输层协议,UDP是无连接、不可靠的,适用于对实时性要求高的应用,如音频视频流媒体。书里可能会对比TCP和UDP的特点,解释它们各自的适用场景。 5. **网络接口与数据封装**:...

    计算机网络实验三运输层

    3. **实验内容**:可能包括TCP和UDP协议的数据包抓取与分析,观察头部字段、序列号、确认号、标志位等关键信息。 实验指导书通常会提供以下信息: 1. **实验步骤**:如何配置实验环境,如何使用抓包工具捕捉数据包...

    TCP 实习内容及相关知识内容

    * 兼容多种网络协议,例如 TCP/IP 和 UDP。 * 提供了一组针对 Windows 的扩展库函数,使得开发者可以充分地利用 Windows 消息驱动机制进行编程。 1.2.1 Winsock 简介 Winsock 是一种网络编程接口,提供了一套 API ...

    网络协议大全

    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、列举几种常见的协议,...

    MFC UDP通信简单实现

    TCP协议是一种面向连接的、可靠的传输层协议,它提供了错误检测和确认机制,确保数据包能够准确、有序地到达目的地。因此,TCP在网络通信中用于需要稳定连接和数据完整性的场景,比如文件下载、网页浏览等。 然而,...

    windows网络助手调试工具

    对于UDP协议,该工具提供了如下功能: 1. 数据包嗅探:捕获并解析UDP数据包,便于了解网络流量和数据交互情况。 2. UDP广播与多播:支持发送UDP广播和多播数据包,用于测试网络环境下的多点通信能力。 3. UDP端口...

    UDPSocket编程客户端和服务端

    UDP Socket编程是利用UDP协议进行网络通信的一种方式,涉及客户端和服务端的交互。 **UDP Socket编程基础** UDP Socket编程的核心在于创建Socket,绑定端口,发送和接收数据报。在客户端,我们通常会创建一个Socket...

    TCP-IP详解卷1:协议

    以上只是《TCP/IP详解卷1:协议》部分内容的简述,书中的详细讲解涵盖了这些知识点的原理、配置、操作和实例,对于深入理解TCP/IP协议体系及其在网络中的作用至关重要。无论是初学者还是经验丰富的网络工程师,都能...

    TCPIP详解卷二协议实现

    5. UDP协议:User Datagram Protocol,提供无连接的数据传输服务。讲解UDP头部结构、简单特性以及在实时应用中的优势。 6. TCP/IP套接字编程:介绍了如何在应用程序中使用套接字API进行TCP和UDP通信,包括socket...

Global site tag (gtag.js) - Google Analytics