美文网首页网络编程
关于网络的几个基础概念

关于网络的几个基础概念

作者: Nick_Can | 来源:发表于2018-02-28 15:26 被阅读7次

    学校时教过网络编程,但是工作后一直没接触,作为码农基础知识,复习下吧。

    分层

    有七层协议,五层,四层之说,都一样。作为入门只需要知道四层。

    • 链接层
    • 网络层:使用IP协议让通过路由器连接起来的计算机能够互相通信。是计算机与计算机的通信。
    • 运输层:使用UDP和TCP协议完成不同计算机的应用进程间的通信。是应用进程与应用进程的通信。
    • 应用层:规定应用进程在通信时的协议。HTTP,FTP等。是对运输数据的进一步加工,或者说按规则封装解析,使其适合某一类进程使用,比如文件传输用FTP。

    TCP

    • 运输层协议之一。
    • 面向连接。发送数据前,两端需要进行三次握手确认连接后,方可发送数据。所以说是可靠的。
    • 有序的。通过滑窗,ack信号,重发机制来完成。

    UDP

    • 运输层协议之一。
    • 无连接。直接发送数据,不保证数据是否能收到。所以说是不可靠的。
    • 无序的。可能丢失,重复。

    Socket(套接字)

    • 对TCP/IP的封装,支持TCP和UDP协议,是一套调用接口(API)。
    • 抽象的表示端口到端口的连接。
    • 连接过程:服务器监听,客户端请求,连接确认。

    HTTP

    • 应用层协议之一。
    • Unity的WWW。
    • 规定数据的封装解析规则。
    • 基于TCP。但是只能由客户端先主动向服务端发送请求。
    • HTTP1.1前是短连接,HTTP1.1开始支持长连接。
    • HTTP1.1之前,发一条数据,需要先确认连接,然后发送一条数据,然后断开连接.
    • 其实一般都认为HTTP是短连接,而socket(TCP)被用于实现长连接。

    长连接和短连接

    • 一般是针对TCP而言的。
    • 建立TCP连接,发送一条数据后,立即断开连接,那么就是短连接。反之,维持连接状态,知道某一端主动关闭接口,那么就是长连接。
    • 如果端对端的连接数多,但一条连接线路中请求不多,就用短连接。因为保持连接也需要占用资源。
    • 如果一个端对端的连接中,请求很多,就用长连接。因为建立连接的过程也是个消耗过程。

    Socket过程

    • 建立一个Socket需要知道,协议,发送端端IP,发送端端端口号,接收端IP,接收端端口号。
    • 服务端:new socket -> bind -> listen -> accept -> read/write -> close (listen监听端口,accept收取客户端Socket)
    • 客户端:new socket -> connect -> read/write -> close


      Socket建立过程.jpg

    TCP连接的三次握手

    • 客户端发送同步信号syn(j) -> 服务端返回同步信号syn(k),确认信号ack(j+1) -> 客户端发挥确认信号ack(k+1)
    • 客户端调用connect -> 服务端accept -> 客户端connect得到返回 -> 服务端accept得到返回
      TCP三次握手.png

    参考

    之前写的一个相关的测试工程
    Linux Socket过程详细解释(包括三次握手建立连接,四次握手断开连接)
    TCP、UDP以及TCP滑窗,它们的区别

    相关文章

      网友评论

        本文标题:关于网络的几个基础概念

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