网络协议

作者: qiying | 来源:发表于2015-09-22 14:20 被阅读3055次

    一直以来对网络协议都不是特别清楚,为此整理一下。

    一、概述

    计算机网络体系结构通信协议划分为七层,自下而上依次为:物理层(Physics Layer)、数据链路层(Data Link Layer)、网络层(Network Layer)、传输层(Transport Layer)、会话层(Session Layer)、表示层(Presentation Layer)、应用层(Application Layer)。

    物理层: 电力线通信(PLC) ·SONET/SDH· G.709 ·光导纤维· 同轴电缆 · 双绞线等

    数据链路层Wi-Fi(IEEE 802.11) · WiMAX(IEEE 802.16) ·ATM · DTM ·令牌环·以太网·FDDI ·帧中继· GPRS · EVDO ·HSPA · HDLC ·PPP· L2TP ·PPTP · ISDN·STP 等

    网络层协议:IP (IPv4 · IPv6) · ICMP· ICMPv6·IGMP ·IS-IS · IPsec · ARP · RARP . BOOTP等

    传输层协议:TCP · UDP · TLS ·DCCP· SCTP · RSVP · OSPF 等

    应用层协议:DHCP ·DNS· FTP · Gopher · HTTP· IMAP4 · IRC · NNTP · XMPP ·POP3 · SIP · SMTP ·SNMP · SSH ·TELNET · RPC · RTCP · RTP ·RTSP· SDP · SOAP · GTP · STUN · NTP· SSDP · BGP · RIP. DNS 等



    三、UDT 


    基于UDP。UDT的主要目的是支持高速广域网上的海量数据传输,而互联网上的标准数据传输协议TCP在高带宽长距离网络上性能很差。UDT建于UDP之上,并引入新的拥塞控制和数据可靠性控制机制。UDT是面向连接的双向的应用层协议。它同时支持可靠的数据流传输和部分可靠的数据报传输。一般应用在点到点技术(P2P),防火墙穿透,多媒体数据传输等这些方面。

    UDT是将应用层数据打包成固定的大小,除非数据不够这么大。和TCP相似的是,这个固定的包大小叫做MSS(最大包大小)。由于期望UDT用来传输大块数据流,我们假定只有很小的一部分不规则的大小的包在UDT session中。MSS能够通过应用程式来安装,MTU是其最优值(包括任何包头)。

    UDT有两种包:数据包和控制包。他们通过包头的第一位来区分(标志位)。假如是0,表示是数据包,1表示是控制包。

    四、Socket


    应用层与TCP/IP协议族通信的中间软件抽象层,它是一组接口。在设计模式中,Socket其实就是一个门面模式,它把复杂的TCP/IP协议族隐藏在Socket接口后面,对用户来说,一组简单的接口就是全部,让Socket去组织数据,以符合指定的协议。

    优点:1.传输数据为字节级,传输数据可自定义,数据量小。相应的移动端开发,手机费用低;2.传输数据时间短,性能高;3.适合C/S之间信息实时交互;4.可以加密,数据安全性高

    缺点: 1.需要对传输的数据进行解析,转化为应用级的数据;2.对开发人员的开发水平要求高;3.相对于Http协议传输,增加了开发量

    socket通信流程

    socket是"打开—读/写—关闭"模式的实现,以使用TCP协议通讯的socket为例,其交互流程大概是这样子的

    服务器根据地址类型(ipv4,ipv6)、socket类型、协议创建socket

    服务器为socket绑定ip地址和端口号

    服务器socket监听端口号请求,随时准备接收客户端发来的连接,这时候服务器的socket并没有被打开

    客户端创建socket

    客户端打开socket,根据服务器ip地址和端口号试图连接服务器socket

    服务器socket接收到客户端socket请求,被动打开,开始接收客户端请求,直到客户端返回连接信息。这时候socket进入阻塞状态,所谓阻塞即accept()方法一直到客户端返回连接信息后才返回,开始接收下一个客户端谅解请求

    客户端连接成功,向服务器发送连接状态信息

    服务器accept方法返回,连接成功

    客户端向socket写入信息

    服务器读取信息

    客户端关闭

    服务器端关闭

    服务器socket与客户端socket建立连接的部分其实就是大名鼎鼎的三次握手

    补充


    HTTPS:

    Hypertext Transfer Protocol over Secure Socket Layer

    以安全为目标的HTTP通道,简单讲是HTTP的安全版。即HTTP下加入SSL层,HTTPS的安全基础是SSL,因此加密的详细内容就需要SSL。它是一个URI scheme(抽象标识符体系),句法类同http:体系。用于安全的HTTP数据传输。https:URL表明它使用了HTTP,但HTTPS存在不同于HTTP的默认端口及一个加密/身份验证层(在HTTP与TCP之间)。这个系统的最初研发由网景公司进行,提供了身份验证与加密通讯方法,现在它被广泛用于万维网上安全敏感的通讯,例如交易支付方面。

    HTTPS和HTTP的区别

    超文本传输协议HTTP协议被用于在Web浏览器和网站服务器之间传递信息。HTTP协议以明文方式发送内容,不提

    供任何方式的数据加密,如果攻击者截取了Web浏览器和网站服务器之间的传输报文,就可以直接读懂其中的信息,因此HTTP协议不适合传输一些敏感信息,

    比如信用卡号、密码等。

    为了解决HTTP协议的这一缺陷,需要使用另一种协议:安全套接字层超文本传输协议HTTPS。为了数据传输的安全,HTTPS在HTTP的基础上加入了SSL协议,SSL依靠证书来验证服务器的身份,并为浏览器和服务器之间的通信加密。

    HTTPS和HTTP的区别主要为以下四点:

    一、https协议需要到ca申请证书,一般免费证书很少,需要交费。

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

    三、http和https使用的是完全不同的连接方式,用的端口也不一样,前者是80,后者是443。

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


    HTTP、TCP

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

    HTTP协议,可以认为主要是用来访问网页的,是比TCP更上层的协议,http里面规定了我们访问网页的时候如何进行缓存,以及请求什么格式。等等,主要是为了让人们访问网页的时候更快,更安全,而规定了很多参数。你可以认为TCP就是搬运工,保证搬动的东西不被损坏。http协议是做业务的,用来决定要不要搬运,以及如何搬运,从哪去搬运。

    SOCKET、TCP、UDP、HTTP

    Socket是一个针对TCP和UDP编程的接口,你可以借助它建立TCP连接等等。而TCP和UDP协议属于传输层 。而http是个应用层的协议,它实际上也建立在TCP协议之上(HTTP是轿车,提供了封装或者显示数据的具体形式;Socket是发动机,提供了网络通信的能力)。

    Socket是对TCP/IP协议的封装,Socket本身并不是协议,而是一个调用接口(API),通过Socket,我们才能使用TCP/IP协议。Socket的出现只是使得程序员更方便地使用TCP/IP协议栈而已,是对TCP/IP协议的抽象,从而形成了我们知道的一些最基本的函数接口。

    相关文章

      网友评论

        本文标题:网络协议

        本文链接:https://www.haomeiwen.com/subject/elsicttx.html