首页
学习
活动
专区
工具
TVP
发布
精选内容/技术社群/优惠产品,尽在小程序
立即前往

初探网络协议之HTTP、TCPIP、socket

经典的OSI七层协议模型

物理层(比特流)

数据链路层(帧,frame)

网络层(分组,数据报,packet)

传输层(分段,segment)

会话层(数据)

表示层(数据)

应用层(数据)

HTTP

应用层协议,包装和显示数据,web基础。从建立连接到关闭连接的过程称为“一次连接”。客户端每次发送的请求服务端都需要响应,请求结束后,会主动关闭连接。

TCP/IP

传输层协议,传输数据。

三次握手:

第一次握手:客户端发送syn(ack=j)包到服务器,进入SYN_SEND状态,等待服务器确认。

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

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

三次握手之后,客户端和服务端才进行数据传输。

理想状态下,TCP连接一旦建立,在通信双方中的任何一方主动关闭连接之前,TCP 连接都将被一直保持下去。

断开连接时服务器和客户端均可以主动发起断开TCP连接的请求,断开过程需要经过“四次握手”。

SOCKET

对TCP/IP的封装。

最基本的函数接口,比如create、listen、connect、accept、send、read和write。

面向网络的Sokcet其实就是主机IP地址 端口号,Socket连接就是两个Socket套接字之间建立的连接。

套接字之间的连接分为三个步骤:服务器监听、客户端请求、连接确认。

服务器监听:实时监控网络状态,等待客户的请求连接

客户端请求:客户端的套接字首先描述要连接的服务端的套接字,指出服务端套接字的地址和端口,并发出连接请求

连接确认: 服务端套接字接收或者监听到客户端套接字的连接请求,建立一个新线程,把服务端的套接字描述发给客户端套接字,一旦客户端确认之后,双方就建立连接。

而服务器端套接字继续处于监听状态,继续接收其他客户端套接字的连接请求。

扩展

HTTPS

HTTPS(全称:Hyper Text Transfer Protocol over Secure Socket Layer),是以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。

HTTPS:URL 表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。

HTTPS使用端口443,而不是像HTTP那样适用端口80来和TCP/IP 进行通信。SSL使用40位关键字作为RC4流加密算法,这对于商业信息的加密是合适的。HTTPS和SSL支持使用X.509数字认证,如果需要的话用户可以确认发送者是谁。 主要作用分为两种:

一种是建立一个信息安全通道,来保证数据传输的安全。

另一种就是确认网站的真实性,凡是使用https的网站,都可以通过点击浏览器地址栏的锁头标志来查看网站认证之后的真实信息。也可以通过CA 机构颁发的安全签章来查询。

HTTPS和HTTP的区别:

https 用的 443 端口, http 用的 80 端口

采用 https 的服务器必须从CA(Certificate Authority)申请一个用于证明服务器用途类型的证书。

http是超文本传输协议,信息是明文传输,https 则是具有安全性的ssl加密传输协议。

http的连接很简单,是无状态的;HTTPS协议是由SSL HTTP协议构建的可进行加密传输、身份认证的网络协议,比http协议安全。

TCP和UDP的区别

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

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

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

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

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

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

形象的总结socket与http

socket相当于打电话,http相当于写信,不需要对方有回应。

  • 发表于:
  • 原文链接http://kuaibao.qq.com/s/20180425A0PR5R00?refer=cp_1026
  • 腾讯「腾讯云开发者社区」是腾讯内容开放平台帐号(企鹅号)传播渠道之一,根据《腾讯内容开放平台服务协议》转载发布内容。
  • 如有侵权,请联系 cloudcommunity@tencent.com 删除。

扫码

添加站长 进交流群

领取专属 10元无门槛券

私享最新 技术干货

扫码加入开发者社群
领券