博客
关于我
网络编程中的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/

你可能感兴趣的文章
MySQL 调优/优化的 101 个建议!
查看>>
mysql 转义字符用法_MySql 转义字符的使用说明
查看>>
mysql 输入密码秒退
查看>>
mysql 递归查找父节点_MySQL递归查询树状表的子节点、父节点具体实现
查看>>
mysql 通过查看mysql 配置参数、状态来优化你的mysql
查看>>
mysql 里对root及普通用户赋权及更改密码的一些命令
查看>>
Mysql 重置自增列的开始序号
查看>>
mysql 锁机制 mvcc_Mysql性能优化-事务、锁和MVCC
查看>>
MySQL 错误
查看>>
mysql 随机数 rand使用
查看>>
MySQL 面试题汇总
查看>>
MySQL 面试,必须掌握的 8 大核心点
查看>>
MySQL 高可用性之keepalived+mysql双主
查看>>
MySQL 高性能优化规范建议
查看>>
mysql 默认事务隔离级别下锁分析
查看>>
Mysql--逻辑架构
查看>>
MySql-2019-4-21-复习
查看>>
mysql-5.6.17-win32免安装版配置
查看>>
mysql-5.7.18安装
查看>>
MySQL-Buffer的应用
查看>>