两类传输协议:TCP;UDP

TCP是Tranfer Control Protocol的 简称,是一种面向连接的保证可靠传输的协议。通过TCP协议传输,得到的是一个顺序的无差错的数据流。发送方和接收方的成对的两个socket之间必须建 立连接,以便在TCP协议的基础上进行通信,当一个socket(通常都是server socket)等待建立连接时,还有一个socket能够要求进行连接,一旦这两个socket连接起来,它们就能够进行双向传输数据,两方都能够进行发送 或接收操作。

UDP是User Datagram Protocol的简称,是一种无连接的协议,每一个数据报都是一个独立的信息,包含完整的源地址或目的地址,它在网络上以不论什么可能的路径传往目的地,因此能否到达目的地,到达目的地的时间以及内容的正确性都是不能被保证的。

不同于ISO模型的七个分层,TCP/IP协议参考模型把所有的TCP/IP系列协议归类到四个抽象层中

应用层:TFTP,HTTP,SNMP,FTP,SMTP,DNS,Telnet 等等

传输层:TCP,UDP

网络层:IP,ICMP,OSPF,EIGRP,IGMP

数据链路层:SLIP,CSLIP,PPP,MTU

每一抽象层建立在低一层提供的服务上,并且为高一层提供服务,看起来大概是这样子的

在TCP/IP协议中两个因特网主机通过两个路由器和对应的层连接。各主机上的应用通过一些数据通道相互执行读取操作;

比较:

UDP:
1,每一个数据报中都给出了完整的地址信息,因此无须要建立发送方和接收方的连接。

2,UDP传输数据时是有限制大小的,每一个被传输的数据报必须限定在64KB之内。

3,UDP是一个不可靠的协议,发送方所发送的数据报并不一定以相同的次序到达接收方

TCP:
1,面向连接的协议,在socket之间进行传输数据之前必定要建立连接,所以在TCP中须要连接时间。

2,TCP传输数据限制大小,一旦连接建立起来,两方的socket就能够按统一的格式传输大的数据。

3,TCP是一个可靠的协议,它确保接收方全然正确地获取发送方所发送的所有数据。

应用:

1,TCP在网络通信上有极强的生命力,比如远程连接(Telnet)和文件传输(FTP)都须要不定长度的数据被可靠地传输。可是可靠的传输是要付出代价的,对数据内容正确性的检验必定占用计算机的处理时间和网络的带宽,因此TCP传输的效率不如UDP高。

2,UDP操作简单,而且仅须要较少的监护,因此通常常使用于局域网高可靠性的分散系统中client/server应用程序。比如视频会议系统,并不要求音频视频数据绝对的正确,仅仅要保证连贯性就能够了,这样的情况下显然使用UDP会更合理一些。

三次握手

在TCP/IP协议中,TCP协议通过三次握手建立一个可靠的连接

第一次握手:客户端尝试连接服务器,向服务器发送syn包(同步序列编号Synchronize Sequence Numbers),syn=j,客户端进入SYN_SEND状态等待服务器确认

第二次握手:服务器接收客户端syn包并确认(ack=j+1),同时向客户端发送一个SYN包(syn=k),即SYN+ACK包,此时服务器进入SYN_RECV状态

第三次握手:第三次握手:客户端收到服务器的SYN+ACK包,向服务器发送确认包ACK(ack=k+1),此包发送完毕,客户端和服务器进入ESTABLISHED状态,完成三次握手;

面试中常考到的关于TCP/UDP的问题:

TCP和UDP的区别

  1、TCP是面向链接的,虽然说网络的不安全不稳定特性决定了多少次握手都不能保证连接的可靠性,但TCP的三次握手在最低限度上(实际上也很大程度上保证了)保证了连接的可靠性;

  而UDP不是面向连接的,UDP传送数据前并不与对方建立连接,对接收到的数据也不发送确认信号,发送端不知道数据是否会正确接收,当然也不用重发,所以说UDP是无连接的、不可靠的一种数据传输协议。

  2、也正由于1所说的特点,使得UDP的开销更小数据传输速率更高,因为不必进行收发数据的确认,所以UDP的实时性更好。

  知道了TCP和UDP的区别,就不难理解为何采用TCP传输协议的MSN比采用UDP的QQ传输文件慢了,但并不能说QQ的通信是不安全的,

  因为程序员可以手动对UDP的数据收发进行验证,比如发送方对每个数据包进行编号然后由接收方进行验证啊什么的,

  即使是这样,UDP因为在底层协议的封装上没有采用类似TCP的“三次握手”而实现了TCP所无法达到的传输效率。

两类传输协议:TCPUDP总结相关推荐

  1. Java 网络编程(二) 两类传输协议:TCP UDP

    两类传输协议:TCP,UDP TCP TCP是Transfer Control Protocol(传输控制协议)的简称,是一种面向连接的保证可靠传输的协议. 在TCP/IP协议中, IP层主要负责网络 ...

  2. HTTP 和 HTTPS 两种传输协议各自含义是什么?二者使用有什么区别?

    文章目录 前言 一.什么是 HTTP 传输协议? 二.什么是 HTTPS 传输协议? 三.HTTP 和 HTTPS 有何区别? 总结 前言 HTTP 属于超文本传输协议,用来在 Internet 上传 ...

  3. FTP 服务搭建及常用的命令脚本及传输协议基础普及

    1.首先我们日常的日常工作会常遇到各种各样的传输问题,比如需要将更新的补丁上传到服务器,或者从服务器上下载一些资料,但是经常用到的协议就大致的归纳一下(资料来自百度百科): 首先是FTP ftp的语义 ...

  4. 视频传输---传输协议的选择

    为了保证数字视频网络传输的实时性和图像的质量,传输层协议的选择是整个设计和实现的关键.Internet在IP层上使用两种传输协议:一种是TCP(传输控制协议),它是面向连接的网络协议:另一种是UDP( ...

  5. 利用TCP传输协议实现基于Socket的聊天程序(高级版_多线程)

    大家好,在上篇<利用TCP和UDP协议,实现基于Socket的小聊天程序(初级版)>博客中,所写程序只是实现简单的连接通信,基于控制台实现,运用了TCP和UDP两种传输协议.今天我和大家分 ...

  6. 简述igp和egp_IGP 和 EGP 这两类协议的主要区别是什么 - 问答库

    问题: [问答题] IGP 和 EGP 这两类协议的主要区别是什么? 在一台锐捷交换机上配置VLAN5(名称为abc),将端口F0/10-F0/20添加到VLAN5中,并将F0/1端口设置成Trunk ...

  7. SOAP和HTTP 两种基本传输协议

    1.SOAP:Simple Object Access Protocol ^{Symbolic Optimal Assembly Program}. 2.1.HTTP-GET  2.2.HTTP-PO ...

  8. 计算机网络 | 传输层的两个重要协议——TCP、UDP

    目录 传输层概述 传输层的作用 运输层端口号.复用与分用的概念 发送方的复用和接收方的分用 UDP和TCP的对比 TCP的流量控制 TCP的拥塞控制 TCP的差错控制 UDP的差错控制的和流控 TCP ...

  9. FTP文件传输协议原理详解(两种工作模式)

    初始FTP     文件传输协议(File Transfer Protocol,缩写:FTP)是一个用于在计算机网络上在客户端和服务器之间进行文件传输的应用层协议.文件传送(file transfer ...

最新文章

  1. leetcode算法题--剪绳子
  2. StringBuilder/StringBuffer类
  3. 九度OJ 朋友圈 并查集
  4. mysql表内增加一个字段并赋值
  5. webpack打包后引用cdn的js_呕心沥血编写的webpack多入口零基础配置 【建议收藏】...
  6. signature=d60f979e909db97dbaa034ebe539f2fd,Experimental signatures of fermiophobic Higgs bosons
  7. My SQL出错代码及出错信息对照
  8. 字典树-01字典树基础
  9. 【牛客 - 303D第十五届浙江大学宁波理工学院程序设计大赛(同步赛)】Campaign(二进制枚举,位运算,暴力,思维)
  10. SharePoint 2013 入门教程--系列文章
  11. java servlet 对象_java servlet的域对象
  12. 数据丢失与重复_面试官:如何保证消息的可靠性传输?如何处理消息丢失的问题?...
  13. 智能硬件开发怎么做?机智云全套自助式开发工具助力高效开发
  14. Android图片转化黑白图片,图像二值化,生成图像二值化后的黑白图像和图像矩阵(无压缩0,1矩阵),可灵活设置二值化值域
  15. python数字信号处理应用pdf艾伦唐尼_Python数字信号处理应用
  16. 鸿海成立AI研发中心 5年投资100亿新台币
  17. Excel学习笔记:P10-图表制作(下)
  18. vscode开启鼠标滚轮缩放字体大小设置
  19. 初学git与github理解、使用、实验
  20. oracle 修改字符集 修改为ZHS16GBK

热门文章

  1. [转载] 的士速递2
  2. 第一章初始mybatis框架
  3. Fibonacci数列第n项的log(n)算法
  4. Android魔术(第五弹)—— 一步步实现滑动折叠列表
  5. Unity基础之:UnityAPI的学习
  6. [CQOI 2006]线段树之简单题
  7. js动态获取时间的方式
  8. myeclipse 9.0安装 vss1.6.2不显示问题
  9. 如何将自己的代码放到github上
  10. vue-li 配置介绍