TCP协议

TCP(Transmission Control Protocol 传输控制协议)是一种面向连接的、可靠的、基于字节流的传输层通信协议,由IETF的RFC 793定义。在简化的计算机网络OSI模型中,它完成第四层传输层所指定的功能,用户数据报协议(UDP)是同一层内另一个重要的传输协议。

在因特网协议族(Internet protocol suite)中,TCP层是位于IP层之上,应用层之下的中间层。不同主机的应用层之间经常需要可靠的、像管道一样的连接,但是IP层不提供这样的流机制,而是提供不可靠的包交换。

TCP的优点

可靠,稳定

TCP的可靠体现在TCP在传递数据之前,会有三次握手来建立连接,而且在数据传递时,有确认、窗口、重传、拥塞控制机制,在数据传完后,还会断开连接用来节约系统资源。

TCP的缺点

慢,效率低,占用系统资源高,易被***

TCP在传递数据之前,要先建连接,这会消耗时间,而且在数据传递时,确认机制、重传机制、拥塞控制机制等都会消耗大量的时间,而且要在每台设备上维护所有的传输连接,事实上,每个连接都会占用系统的CPU、内存等硬件资源。

由于TCP存在确认机制和三次握手机制,这些是导致TCP容易被人利用,实现DOS、DDOS、CC等***。

TCP应用场景

当对网络通讯质量有要求的时候,比如:整个数据要准确无误的传递给对方,这往往用于一些要求可靠的应用,比如HTTP、HTTPS、FTP等传输文件的协议,POP、SMTP等邮件传输的协议。

在日常生活中,常见使用TCP协议的应用比如:浏览器使用HTTP,Outlook使用POP、SMTP,QQ文件传输等。

UDP协议

UDP 是User Datagram Protocol的简称, 中文名是用户数据报协议,是OSI(Open System Interconnection,开放式系统互联) 参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务,IETF RFC 768是UDP的正式规范。UDP在IP报文的协议号是17。

UDP的优点

快,比TCP稍安全

UDP没有TCP的握手、确认、窗口、重传、拥塞控制等机制,UDP是一个无状态的传输协议,所以它在传递数据时非常快。没有TCP的这些机制,UDP较TCP被***者利用的漏洞就要少一些。但UDP也是无法避免***的,比如:UDP Flood***……

UDP的缺点

不可靠,不稳定

因为UDP没有TCP那些可靠的机制,在数据传递时,如果网络质量不好,就会很容易丢包。

UDP应用场景

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

TCP和UDP使用IP协议从一个网络传送数据包到另一个网络。把IP想像成一种高速公路,它允许其它协议在上面行驶并找到到其它电脑的出口。TCP和UDP是高速公路上的“卡车”,它们携带的货物就是像HTTP,文件传输协议FTP这样的协议等。

TCP/IP是个协议组,可分为三个层次:网络层、传输层和应用层。

在网络层有:IP协议、ICMP协议、ARP协议、RARP协议和BOOTP协议。

在传输层中有:TCP协议与UDP协议。

在应用层有:FTP、HTTP、TELNET、SMTP、DNS等协议。

因此,HTTP本身就是一个协议,是从Web服务器传输超文本到本地浏览器的传送协议。

TCP和UDP是FTP,HTTP和SMTP之类使用的传输层协议。虽然TCP和UDP都是用来传输其他协议的,它们却有一个显著的不同:TCP提供有保证的数据传输,而UDP不提供。这意味着TCP有一个特殊的机制来确保数据安全的不出错的从一个端点传到另一个端点,而UDP不提供任何这样的保证。

HTTP协议

HTTP(超文本传输协议)是利用TCP在两台电脑(通常是Web服务器和客户端)之间传输信息的协议。客户端使用Web浏览器发起HTTP请求给Web服务器,Web服务器发送被请求的信息给客户端。

HTTP是短连接:客户端发送请求都需要服务器端回送响应.请求结束后,主动释放链接,因此为短连接。通常的做法是,不需要任何数据,也要保持每隔一段时间向服务器发送"保持连接"的请求。这样可以保证客户端在服务器端是"上线"状态。

HTTP连接使用的是"请求-响应"方式,不仅在请求时建立连接,而且客户端向服务器端请求后,服务器才返回数据。

Socket协议

网络上的两个程序通过一个双向的通信连接实现数据的交换,这个连接的一端称为一个socket。

建立网络通信连接至少要一对端口号(socket)。socket本质是编程接口(API),对TCP/IP的封装,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口;HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。

java http 面试题_Java面试高级篇—说说TCP,UDP和socket,Http之间联系和区别面试题12期...相关推荐

  1. java有什么字符串_Java 中操作字符串都有哪些类?它们之间有什么区别

    1. String.StringBuffer.StringBuilder 原文出自<编写高质量代码:改善 Java 程序的 151 个建议> CharSequence 接口有三个实现类与字 ...

  2. Java之初步识别网络编程:IP、端口号、TCP/UDP、Socket、URL等

    文章目录 一.网络编程概述 二.网络通信要素概述 三.通信要素1:IP和端口号 IP相关 InetAdress类 如何实例化InetAddress 端口号 四.通信要素2:网络协议 TCP/IP协议簇 ...

  3. 黑马程序员_Java学习日记第八天--TCP/UDP通信、正则表达式

    ------- android培训. java培训.期待与您交流! ---------- UDP/TCP 如何实现通信: 1,找到对方IP 2,数据要发送到对方指定的应用程序上.为了标识这些应用程序, ...

  4. java笔试题_Java面试才到笔试就没有然后了?快来签收,高频笔试57题及解答

    前言 很多人面试之前,可能没有在互联网公司工作过或者说工作过但年头较短,不知道互联网公司技术面试都会问哪些问题? 再加上可能自己准备也不充分,去面试没几个回合就被面试官几个问题打蒙了,甚至笔试都过不了 ...

  5. java笔试面试题_Java面试笔试题大全

    Java面试笔试题大全 42.swtich是否能作用在byte上,是否能作用在long上,是否能作用在String上? switch(expr1)中,expr1是一个整数表达式.因此传递给 switc ...

  6. java数据类型转换方向_java基础学习篇02(数据类型转换和基本面试题)

    JAVA基本数据类型转换 java中的数据类型,分为,引用数据类型和基本数据类型.基本数据类型有8中 整型:byte 8位 . short 16位 .int 32位 .long 64位. (8位=1个 ...

  7. java map 面试题_Java 面试系列:集合详解之 Map + 面试题

    集合有两个大接口:Collection 和 Map,本文重点来讲解集合中另一个常用的集合类型 Map. 以下是 Map 的继承关系图: avatar Map 简介 Map 常用的实现类如下: Hash ...

  8. java框架ssm面试题2016_Java面试-框架篇(SSM-SpringMVC)

    1.讲下SpringMvc的核心入口类是什么,Struts1,Struts2的分别是什么 SpringMvc的是DispatchServlet,Struts1的是ActionServlet,Strut ...

  9. java 数组排序面试题_Java面试宝典_基础编程练习题_数组排序插值(一)

    题目 题目:有一个已经排好序的数组.现输入一个数,要求按原来的规律将它插入数组中. 程序分析:首先判断此数是否大于最后一个数,然后再考虑插入中间的数的情况,插入后此元素之后的数,依次后移一个位置. 代 ...

最新文章

  1. 关于signal和fork的思考
  2. Struts2中表单与Action传递数据三种方式
  3. 转 关于window10安装jdk,配置环境变量,javac不是内部或外部命令,也不是可运行的程序 或批处理文件的细节问题。...
  4. 【华为云技术分享】ARM体系结构基础(1)
  5. bzoj5406: Gift
  6. linux内核rop姿势详解,Linux内核ROP姿势详解(二)
  7. 在应用中集成科大讯飞的语音识别技术
  8. mysql_TCL语言(事务)
  9. 在matlab中使用模糊编辑器实现模糊控制器的设计详解
  10. 【架构风格 架构模式 设计模式 概念】
  11. android item弹出popupwindow recycleview_PopupWindow+RecyclerView实现上下滑动框功能
  12. office2010所做更改会影响共用模板normal
  13. 2011年MacAir更新系统
  14. 我在Windows系统搭建python的Hadoop+Spark环境时踩过的坑
  15. java设计文档怎么写,斩获offer
  16. 解决兼容问题:Windows 7下载安装 Visual C++ 6.0(VC6)
  17. Git学习(1)pro git阅读尚硅谷视频
  18. mac修改shell
  19. 最详细的流媒体传输协议-rtsp协议详解
  20. 大学生心理健康APP的设计与实现

热门文章

  1. 快速掌握 JavaScript 库必备的 5 大技巧!
  2. 开源软件运动为什么流行起来?
  3. 2020中国移动创客马拉松大赛移动云专题赛决赛成功举办
  4. 物联网设备数量激增,续航难题该如何解决?
  5. 复购分析实践中,Pandas 遇到了大难题
  6. 马斯克火箭 SpaceX-API、程序员优雅赚钱项目……GitHub 热点速览
  7. 2020年,我靠Java加薪3倍工资,只因做对这件事
  8. 评测 | 千元以下的扫拖一体机器人,到底值不值得买?
  9. Rust 多久更新一次?
  10. 金三银四网络面经之 DNS 详解!