博客
关于我
网络编程中的socket、TCP和HTTP的区别
阅读量:393 次
发布时间:2019-03-05

本文共 1568 字,大约阅读时间需要 5 分钟。

一、七层网络模型

       在了解socket、TCP和HTTP之前,首先要了解一下七层网络模型,这三种的区别也体现在了这七层网络模型当中。

在这里插入图片描述
每层的协议举例:
7 应用层 例如HTTP、SMTP、SNMP、FTP、Telnet、SIP、SSH、NFS、RTSP、XMPP、Whois、ENRP
6 表示层 例如XDR、ASN.1、SMB、AFP、NCP
5 会话层 例如ASAP、TLS、SSH、ISO 8327 / CCITT X.225、RPC、NetBIOS、ASP、Winsock、BSD sockets
4 传输层 例如TCP、UDP、RTP、SCTP、SPX、ATP、IL
3 网络层 例如IP、ICMP、IGMP、IPX、BGP、OSPF、RIP、IGRP、EIGRP、ARP、RARP、 X.25
2 数据链路层 例如以太网、令牌环、HDLC、帧中继、ISDN、ATM、IEEE 802.11、FDDI、PPP
1 物理层 例如线路、无线电、光纤、信鸽

二、三者的区别

       概念的不同就不做详细的述说了,百度一下就可以知道了。

区别1:网络层次不同

socket: 会话层;

TCP/IP: 传输层;
HTTP : 应用层。
       因为所处的网络层次不同,导致了它们的用作不同。

区别2:作用不同

socket: 套接字是网络通信的基石,即用来创建网络通信接口;

TCP/IP: 可以理解为一种网络传输协议,用来传输数据;
HTTP : 用来解析从服务器传来的数据(使用TCP/IP 传输),让浏览器可以识别,就是给浏览器做翻译。

区别3:连接方式不一样

socket: 连接方式并不固定,因为它只提供通信接口,一般有两种传输协议(TCP或UDP),当选择了相应的传输协议时,就有不同的连接方式;

TCP/IP: 需要经过三次握手和四次挥手来建立连接(握手)和断开连接(挥手),连接比较可靠;
HTTP : 与前者最大区别就是 HTTP 采用短连接的方式,即发送一次数据就连接一次,然后断开,而TCP连接之后可以不断地收发数据。

三、总结

       我们平时说的最多的socket是什么呢,实际上socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。 实际上,Socket跟TCP/IP协议没有必然的联系。Socket编程接口在设计的时候,就希望也能适应其他的网络协议。

       所以说,Socket的出现 只是使得程序员更方便地使用TCP/IP协议栈而已,是对TCP/IP协议的抽象,从而形成了我们知道的一些最基本的函数接口,比如create、
listen、connect、accept、send、read和write等等。网络有一段关于socket和TCP/IP协议关系的说法比较容易理
解:
       “TCP/IP只是一个协议栈,就像操作系统的运行机制一样,必须要具体实现,同时还要提供对外的操作接口。这个就像操作系统会提供标准的编程接口,比如win32编程接口一样,TCP/IP也要提供可供程序员做网络开发所用的接口,这就是Socket编程接口。”
       实际上,传输层的TCP是基于网络层的IP协议的,而应用层的HTTP协议又是基于传输层的TCP协议的,而Socket本身不算是协议,就像上面所说,它只是提供了一个针对TCP或者UDP编程的接口。socket是对端口通信开发的工具,它要更底层一些.
有个比较形象的描述:HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力。

       两个计算机之间的交流无非是两个端口之间的数据通信,具体的数据会以什么样的形式展现是以不同的应用层协议来定义的如HTTP、FTP…

摘自:
师承:上官可编程

转载地址:http://vtlwz.baihongyu.com/

你可能感兴趣的文章
MySQL5.7.19-win64安装启动
查看>>
mysql5.7.19安装图解_mysql5.7.19 winx64解压缩版安装配置教程
查看>>
MySQL5.7.37windows解压版的安装使用
查看>>
mysql5.7免费下载地址
查看>>
mysql5.7命令总结
查看>>
mysql5.7安装
查看>>
mysql5.7性能调优my.ini
查看>>
MySQL5.7新增Performance Schema表
查看>>
Mysql5.7深入学习 1.MySQL 5.7 中的新增功能
查看>>
Webpack 之 basic chunk graph
查看>>
Mysql5.7版本单机版my.cnf配置文件
查看>>
mysql5.7的安装和Navicat的安装
查看>>
mysql5.7示例数据库_Linux MySQL5.7多实例数据库配置
查看>>
Mysql8 数据库安装及主从配置 | Spring Cloud 2
查看>>
mysql8 配置文件配置group 问题 sql语句group不能使用报错解决 mysql8.X版本的my.cnf配置文件 my.cnf文件 能够使用的my.cnf配置文件
查看>>
MySQL8.0.29启动报错Different lower_case_table_names settings for server (‘0‘) and data dictionary (‘1‘)
查看>>
MYSQL8.0以上忘记root密码
查看>>
Mysql8.0以上重置初始密码的方法
查看>>
mysql8.0新特性-自增变量的持久化
查看>>
Mysql8.0注意url变更写法
查看>>