访问量
访客数

网络编程

2021.11.19 阅读量

网络协议

以下内容摘自百度百科:

网络协议指的是计算机网络中互相通信的对等实体之间交换信息时所必须遵守的规则的集合。

为了使不同计算机厂家生产的计算机能够相互通信,以便在更大的范围内建立计算机网络,国际标准化组织(ISO)在1978年提出了“开放系统互联参考模型”,即著名的OSI/RM模型(Open System Interconnection/Reference Model)。

网络协议分层

国际标准化组织ISO 于1981年正式推荐了一个网络系统结构—-七层参考模型,叫做开放系统互连模型(Open System Interconnection,OSI)。由于这个标准模型的建立,使得各种计算机网络向它靠拢,大大推动了网络通信的发展。

它将计算机网络体系结构的通信协议划分为七层,自下而上依次为:

  • 物理层(Physics Layer):物理层是OSI的第一层,它虽然处于最底层,却是整个开放系统的基础。物理层为设备之间的数据通信提供传输媒体及互连设备,为数据传输提供可靠的环境。以太网 · 调制解调器 · 电力线通信(PLC) · SONET/SDH · G.709 · 光导纤维 · 同轴电缆 · 双绞线等属于物理层;

  • 数据链路层(Data Link Layer):数据链路可以粗略地理解为数据通道。物理层要为终端设备间的数据通信提供传输媒体及其连接.媒体是长期的,连接是有生存期的.在连接生存期内,收发两端可以进行不等的一次或多次数据通信.每次通信都要经过建立通信联络和拆除通信联络两过程.这种建立起来的数据收发关系就叫作数据链路。Wi-Fi(IEEE 802.11) · WiMAX(IEEE 802.16) ·ATM · DTM · 令牌环 · 以太网 ·FDDI · 帧中继 · GPRS · EVDO ·HSPA · HDLC · PPP · L2TP ·PPTP · ISDN·STP · CSMA/CD等;

  • 网络层(Network Layer):这层对端到端的包传输进行定义,它定义了能够标识所有结点的逻辑地址,还定义了路由实现的方式和学习的方式。为了适应最大传输单元长度小于包长度的传输介质,网络层还定义了如何将一个包分解成更小的包的分段方法。IP (IPv4 · IPv6) · ICMP· ICMPv6·IGMP ·IS-IS · IPsec · ARP · RARP · RIP等属于网络层;

  • 传输层(Transport Layer):TCP · UDP · TLS · DCCP · SCTP · RSVP · OSPF 等;

  • 会话层(Session Layer):它定义了如何开始、控制和结束一个会话,包括对多个双向消息的控制和管理,以便在只完成连续消息的一部分时可以通知应用,从而使表示层看到的数据是连续的,在某些情况下,如果表示层收到了所有的数据,则用数据代表表示层。示例:RPC,SQL等;

  • 表示层(Presentation Layer):这一层的主要功能是定义数据格式及加密。例如,FTP允许你选择以二进制或ASCII格式传输。如果选择二进制,那么发送方和接收方不改变文件的内容。如果选择ASCII格式,发送方将把文本从发送方的字符集转换成标准的ASCII后发送数据。在接收方将标准的ASCII转换成接收方计算机的字符集。示例:加密,ASCII等;

  • 应用层(Application Layer):与其它计算机进行通讯的一个应用,它是对应应用程序的通信服务的。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 等属于应用层协议;

网络协议有很多种,具体选择哪一种协议则要看情况而定。Internet上的计算机使用的是TCP/IP协议。

TCP/IP协议

TCP/IP 协议是一个协议簇,包括很多协议。命名为 TCP/IP 协议的原因是 TCP 和 IP 这两个协议非常重要,应用很广。

TCP/IP是因特网的正式网络协议,是一组在许多独立主机系统之间提供互联功能的协议,规范因特网上所有计算机互联时的传输、解释、执行、互操作,解决计算机系统的互联、互通、操作性,是被公认的网络通信协议的国际工业标准。TCP/IP是分组交换协议,信息被分成多个分组在网上传输,到达接收方后再把这些分组重新组合成原来的信息。除TCP/IP外,常用的网络协议还有PPP、SLIP等。

TCP/IP(Transport Control Protocol/Internet Protocol,传输控制协议/Internet协议)的历史应当追溯到Internet的前身—ARPAnet时代。为了实现不同网络之间的互连,美国国防部于1977年到1979年间制定了TCP/IP体系结构和协议。TCP/IP是由一组具有专业用途的多个子协议组合而成的,这些子协议包括TCP、IP、UDP、ARP、ICMP等。TCP/IP凭借其实现成本低、在多平台间通信安全可靠以及可路由性等优势迅速发展,并成为Internet中的标准协议。在上世纪90年代,TCP/IP已经成为局域网中的首选协议,在最新的操作系统(如Windows7、Windows XP、Windows Server2003等)中已经将TCP/IP作为其默认安装的通信协议。

网络编程-001

TCP 和 UDP 还是HTTP都是 TCP/IP 协议簇里的一员。UDP、TCP处于 OSI 的传输层,而http协议是在tcp/ip协议模型上应用层的一种传输协议。

TCP

TCP是Transmission Control Protocol的简称,中文名是传输控制协议,是一种面向连接的、可靠的、基于字节流的传输层通信协议。

特点:

  • 面向连接,即必须在双方建立可靠连接之后,才会收发数据
  • 信息包头 20 个字节
  • 建立可靠连接需要经过3次握手
  • 断开连接需要经过4次挥手
  • 需要维护连接状态
  • 报文头里面的确认序号、累计确认及超时重传机制能保证不丢包、不重复、按序到达
  • 拥有流量控制及拥塞控制的机制

因为TCP协议是可靠性协议,即接收方收到的数据是完整,有序,无差错的,所以建立连接需要三次握手。

UDP

UDP 是User Datagram Protocol的简称,中文名是用户数据报协议,是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。

特点:

  • 不建立可靠连接,无需维护连接状态
  • 信息包头 8 个字节
  • 接收端,UDP 把消息段放在队列中,应用程序从队列读消息
  • 不受拥挤控制算法的调节
  • 传送数据的速度受应用软件生成数据的速率、传输带宽、源端和终端主机性能的限制
  • 面向数据报,不保证接收端一定能收到

HTTP

HTTP 协议是 Hyper Text Transfer Protocol的缩写,超文本传输协议,是一个基于请求与响应,无状态的,应用层的协议,常基于TCP/IP协议传输数据,互联网上应用最为广泛的一种网络协议,所有的WWW文件都必须遵守这个标准。设计HTTP的初衷是为了提供一种发布和接收HTML页面的方法。

特点:

  • 基于TCP的可靠通信
  • 基于客户端与服务端的通信
  • 无状态:是指协议对于事务处理没有记忆能力。缺少状态意味着如果后续处理需要前面的信息,则它必须重传,这样可能导致每次连接传送的数据量增大。另一方面,在服务器不需要先前信息时它的应答就较快
  • 无连接:其含义是限制每次连接只处理一个请求。服务器处理完客户端请求,并收到客户端应答后,即断开连接,采用这种方式可以节省传输时间

HTTPS

HTTPS 是Hyper Text Transfer Protocol over SecureSocket Layer的简称,是以安全为目标的 HTTP 通道,在HTTP的基础上通过传输加密和身份认证保证了传输过程的安全性。HTTPS 在HTTP 的基础下加入SSL,HTTPS 的安全基础是 SSL,因此加密的详细内容就需要 SSL。

特点:

  • 内容加密:采用混合加密技术,中间者无法直接查看明文内容
  • 验证身份:通过证书认证客户端访问的是自己的服务器
  • 保护数据完整性:防止传输的内容被中间人冒充或者篡改

Socket

Socket 也称作"套接字",用于描述 IP 地址和端口,是一个通信链的句柄,是应用层与传输层之间的桥梁。网络应用程序位于应用层,TCP 和 UDP 属于传输层协议,在应用层和传输层之间,就可以使用 Socket 来进行连接。 即Socket 是传输层供给应用层的编程接口。

粘包、拆包

拆包和粘包是在socket编程中经常出现的情况,在socket通讯过程中,如果通讯的一端一次性连续发送多条数据包,tcp协议会将多个数据包打包成一个tcp报文发送出去,这就是所谓的粘包。而如果通讯的一端发送的数据包超过一次tcp报文所能传输的最大值时,就会将一个数据包拆成多个最大tcp长度的tcp报文分开传输,这就叫做拆包。

对于粘包的情况,要对粘在一起的包进行拆包。对于拆包的情况,要对被拆开的包进行粘包,即将一个被拆开的完整应用包再组合成一个完整包。比较通用的做法就是每次发送一个应用数据包前在前面加上四个字节的包长度值,指明这个应用包的真实长度。

发表评论