TCP/IP,UDP,HTTP,SOCKET之间的区别和关系
TCP/IP协议
TCP/IP协议:传输控制协议/网际协议,也叫网络通讯协议。
它是把OSI七层模型简化为了四层,分别是:应用层、传输层、网络层、数据链路层。TCP/IP是能在多个不同的网络间进行数据传输的协议簇,不仅仅只有TCP IP两个协议,还有SMTP、FTP、UDP、IP、TCP、ICMP、ARP、RARP、ICMP等等,只是TCP和IP最具代表性。
应用层:HTTP、SMTP、FTP、TELNET、DNS等
传输层:TCP、UDP等
网络层:IP、ARP、RARP、ICMP等
数据链路层:PPP、IEEE .2等
Socket是TCP/IP对外提供的编程接口,也就是网络编程。TCP/IP特点有:完全开放、免费、网络地址统一分配、高层协议标准化,可以提供多种多样的可靠的服务。缺点:不通用,不能描述TCP/IP外的协议。
TCP和UDP使用IP协议把数据包从一个网络传送到另一个网络。把IP想像成一种高速公路,它允许其它协议在上面行驶并找到到其它电脑的出口。TCP和UDP是高速公路上的“卡车”,它们携带的货物就是像HTTP,文件传输协议FTP这样的协议等。
TCP和UDP的区别
TCP和UDP是传输层协议。两者区别:
UDP是无连接的,无需创建连接就能发送数据,速度快,但不可靠,数据传递过程中可能会出现丢包,丢失数据。
TCP是面向连接的,有连接的创建和断开过程,也就是三次握手四次挥手,因为有确认机制、重传机制、滑动窗口机制,所以TCP是一个可靠性高的协议,保证数据能准确完整的传输,不过相比于UDP速度慢一些。又因为有三次握手的连接过程,可能发生SYN攻击,即大量的TCP半连接塞满了服务器的半连接队列,无法接收新连接。
另外,可以通过TCP的滑动窗口机制实现流量控制和调整数据发送速率,滑动窗口大小就是服务器缓冲区大小。
基于TCP的协议有:HTTP,FTP,SMTP,TENET,POP3,Finger,NNTP,IMAP4
基于UDP的协议有:BOOTP,DHCP,NTP,TFTP,SNMP
DNS可以基于TCP,也可以基于UDP
HTTP(超文本传输协议)
HTTP基于TCP,利用TCP在两台电脑(通常是Web服务器和客户端)之间传输信息的协议。
它建立在请求/响应模型上,客户端使用Web浏览器发起HTTP请求给Web服务器,Web服务器发送被请求的信息给客户端。
HTTP 协议有一个缺陷:通信只能由客户端发起,举例来说,我们想了解今天的天气,只能是客户端向服务器发出请求,服务器返回查询结果。HTTP 协议做不到服务器主动向客户端推送信息。
这种单向请求的特点,注定了如果服务器有连续的状态变化,客户端要获知就非常麻烦。我们只能使用“轮询”,即每隔一段时候,就发出一个询问,了解服务器有没有新的信息。轮询的效率低,非常浪费资源(因为必须不停连接,或者 HTTP 连接始终打开)。
在HTTP 1.0中,客户端的每次请求都要求建立一次单独的连接,在处理完本次请求后,就自动释放连接。 在HTTP 1.1中则可以在一次连接中处理多个请求,并且多个请求可以重叠进行,不需要等待一个请求结束后再发送下一个请求。 由于HTTP在每次请求结束后都会主动释放连接,因此HTTP连接是一种“短连接”,要保持客户端程序的在线状态,需要不断地向服务器发起连接请求。 通常的做法是即使不需要获得任何数据,客户端也保持每隔一段固定的时间向服务器发送一次“保持连接”的请求,服务器在收到该请求后对客户端进行回复,表明知道客户端“在线”。 若服务器长时间无法收到客户端的请求,则认为客户端“下线”,若客户端长时间无法收到服务器的回复,则认为网络已经断开。
SCOKET(套接字)
Socket是对TCP/IP协议的封装,是应用层与TCP/IP协议族通信的中间软件抽象层,只是个接口,不是协议,通过Socket才能使用TCP/IP协议,正如上文“TCP/IP只是一个协议栈,就像操作系统的运行机制一样,必须要具体实现,同时还要提供对的操作接口。就像操作系统会提供标准的编程接口,比如Win32编程接口一样,TCP/IP也必须对外提供编程接口,这就是Socket编程接口。”
Socket的出现只是可以更方便的使用TCP/IP协议栈而已,其对TCP/IP进行了抽象,形成了几个最基本的函数接口。比如create,listen,accept,connect,read和write等等。
创建Socket连接的时候,可以指定传输层协议,可以是TCP或者UDP,当用TCP连接,该Socket就是个TCP连接,反之。
套接字(socket)是通信的基石,是支持TCP/IP协议的网络通信的基本操作单元。 它是网络通信过程中端点的抽象表示,包含进行网络通信必须的五种信息:连接使用的协议,本地主机的IP地址,本地进程的协议端口,远地主机的IP地址,远地进程的协议端口。 应用层通过传输层进行数据通信时,TCP会遇到同时为多个应用程序进程提供并发服务的问题。 多个TCP连接或多个应用程序进程可能需要通过同一个 TCP协议端口传输数据。为了区别不同的应用程序进程和连接,许多计算机操作系统为应用程序与TCP/IP协议交互提供了套接字(Socket)接口。 应用层可以和传输层通过Socket接口,区分来自不同应用程序进程或网络连接的通信,实现数据传输的并发服务
所以,需要IP协议连接网络,TCP允许我们安全传输数据,HTTP、FTP等使用TCP协议来传输数据,HTTP基于TCP协议,可以使用Socket建立一个TCP或UDP。
乱入,https在使用tcp数据传输时加了TLS,比http安全一些。websocket同理。
TCP/IP,UDP,HTTP,SOCKET之间的区别和关系的更多相关文章
- http、TCP/IP协议与socket之间的区别
http.TCP/IP协议与socket之间的区别 网络由下往上分为: www.2cto.com 物理层-- 数据链路层-- 网络层-- ...
- http、TCP/IP协议与socket之间的区别(转载)
http.TCP/IP协议与socket之间的区别 https://www.cnblogs.com/iOS-mt/p/4264675.html http.TCP/IP协议与socket之间的区别 ...
- Http TCP/IP协议和socket之间的区别和联系
总结,TCP/IP是传输层协议,主要解决数据如何在网路中传输,socket是TCP/IP协议的具体实现,是对TCP/IP协议的封装和应用,属于程序员层面,HTTP是应用层协议,应用层协议很多,类似的像 ...
- HTTP、TCP、UDP以及SOCKET之间的区别/联系
一.TCP/IP代表传输控制协议/网际协议,指的是一系列协组. 可分为四个层次:数据链路层.网络层.传输层和应用层. 在网络层:有IP协议.ICMP协议.ARP协议.RARP协议和BOOTP协议. 在 ...
- TCP/IP Http 和Https socket之间的区别
TCP/IP Http 和Https socket之间的区别 TCP/IP是个协议组,它分为网络层,传输层和应用层, 在网络层有IP协议.ICMP协议.ARP协议.RARP协议和BOOTP协议. ...
- HTTP/TCP/IP UDP Socket等区别联系
1.TCP连接 手机能够使用联网功能是因为手机底层实现了TCP/IP协议,可以使手机终端通过无线网络建立TCP连接.TCP协议可以对上层网络提供接口,使上层网络数据的传输建立在“无差别”的网络之上. ...
- TCP/IP、TCP、UDP、Socket知识汇总
带你了解TCP/IP,UDP,Socket之间关系 https://blog.csdn.net/chaoshenzhaoxichao/article/details/79785318 主要知识点: T ...
- iOS网络HTTP、TCP、UDP、Socket 知识总结
OSI 七层模型 我们一般使用的网络数据传输由下而上共有七层,分别为物理层.数据链路层.网络层.传输层.会话层.表示层.应用层,也被依次称为 OSI 第一层.第二层.⋯⋯. 第七层. 如下图: 各层功 ...
- HTTP、TCP、UDP以及SOCKET
HTTP.TCP.UDP以及SOCKET 一.TCP/IP代表传输控制协议/网际协议,指的是一系列协组. 可分为四个层次:数据链路层.网络层.传输层和应用层. 在网络层:有IP协议.ICMP协议.AR ...
随机推荐
- Codeforces 455B
题目链接 B. A Lot of Games time limit per test 1 second memory limit per test 256 megabytes input standa ...
- jnhs中国省市县区mysql数据表不带gps坐标
1.查省 SELECT * FROM china WHERE china.Pid=0 2.查市 SELECT * FROM chinaWHERE china.Pid=330000 3.查区 SELEC ...
- 利用javafx编写一个时钟制作程序
1.首先创建一个时钟类,用于编写时钟的各种特有属性 package javaclock; /** * * @author admin */import java.util.Calendar;impor ...
- python基础--文件相关操作
文件操作方式的补充: “+”表示的是可以同时读写某个文件 r+:可读可写 w+:可读可写 a+:可读可写 x:只写模式[不可读:不存在则创建,存在则报错] x+:可读可写 文件内的光标移动: 1.re ...
- python 轴向连接
- Leetcode24.Swap Nodes in Pairs两两交换链表中的节点
给定一个链表,两两交换其中相邻的节点,并返回交换后的链表. 示例: 给定 1->2->3->4, 你应该返回 2->1->4->3. 说明: 你的算法只能使用常数的 ...
- maven本地仓库有jar包,maven install还是报错识别不到
去本地仓库对应jar的目录下看下,有一个 _remote.repositories 的文件打开 ***.pom>xxx=***.jar>xxx= 这个 xxx 就是你maven的setti ...
- DirectX11笔记(十一)--Direct3D渲染7--RENDER STATES
原文:DirectX11笔记(十一)--Direct3D渲染7--RENDER STATES 版权声明:本文为博主原创文章,未经博主允许不得转载. https://blog.csdn.net/u010 ...
- php手册常用的函数
<?php ************************************************************/ header("Content-type:tex ...
- [java]反射1 2017-06-25 21:50 79人阅读 评论(10) 收藏
很多东西的实现基础,都是反射,spring的AOP,动态代理等等,下面咱们来学习一下Java的反射 什么是反射? JAVA反射机制是在运行状态中,对于任意一个类,都能够知道这个类的所有属性和方法:对于 ...