linux网络传输协议之TCP/IP

1  网络通信的起源与层次

1.1   起源

        (1)为了满足两个不同主机(包括能联网的linux设备、PC机等)进程间通信,这个时候就需要用网络(有线或无线)

2.1   层次(应用层->操作系统API->网卡驱动->有线无线网卡硬件)

2.1.1 应用层

        (1)低级应用层:直接基于操作系统原始socket接口编程,难度最大,所有的流程自己编写,但是能满足自己所有的需要,比如自己想做一些不一样的功能

        (2)高级应用层:基于网络通信应用框架库,比如jrtp库,ortp库,我们移植过来后,使用别人的库里面的函数去处理,它也是基于socket编写的,但是被封装的更简单化,功能更硬性化

        (3)更高级应用层:比如http、控件,比如安卓里面想上网,添加一个网络控件,就能上网,傻瓜式的,封装更全,所有更硬性

        

3  网络编程框架

3.1  OSI(open system interconnect)7层,国际标准定义,为了方便理解而定义,实际上可以根据自己理解定义层次,实践中与定义无关,包含整个流程即可



3.2  TCP/IP协议的学习(类似的还有UDP/RTP协议)

前言:就像SPI一样是一种别人写好了的协议,我们只需要去调用运用它,不需要自己从头写,对于应用编程者,学会调用基于TCP协议写的库函数提供的API使用功能即可,不需要管每一层的流程,库里面的API封装好了一整套过程,但是还是那句话你可以自己从头写,按照自己的方式。

3.2.1  关于TCP理解的重点(APP->TCP->IP)

    (1)TCP协议工作在传输层,对上服务socket接口,对下调用IP层

    (2)TCP协议面向连接,通信前必须先3次握手建立连接关系后才能开始通信

    (3)TCP协议提供可靠传输,不怕丢包、乱序等。

    (4)UDP也是一种传输协议,是基于非连接的

3.2.2  TCP如何保证可靠传输

   (1)TCP在传输有效信息前要求通信双方必须先握手,建立连接才能通信

    (2)TCP的接收方收到数据包后会ack给发送方,若发送方未收到ack会丢包重传

    (3)TCP的有效数据内容会附带校验,以防止内容在传递过程中损坏

    (4)TCP会根据网络带宽来自动调节适配速率(滑动窗口技术)

    (5)发送方会给各分割报文编号,接收方会校验编号,一旦顺序错误即会重传。

3.2.3  TCP协议的软件流程

    (1)具有公网IP地址的服务器(或者使用动态IP地址映射技术)

    (2)服务器端使用socket、bind(绑定)、listen(监听)API函数,使自己处于监听状态

    (3)客户端socket后,直接主动connect去发起连接。

    (4)服务器收到并同意客户端接入后会建立TCP连接,然后双方开始收发数据,收发时是双向的,而且双方均可发起

    (5)双方均可发起关闭连接

3.2.4  TCP/IP协议分层模型

            


3.2.5  TCP、UDP、RTP协议比较

    (1)RTP位于UDP之上,UDP虽然没有TCP那么可靠,并且无法保证实时业务的服务质量,需要RTCP实时监控数据传输和服务质量,但是,由于UDP的传输时延低于TCP,能与视频和音频很好匹配。因此,在实际应用中,RTP/RTCP/UDP用于音频/视频媒体,而TCP用于数据和控制信令的传输。UDP和TCP协议的主要区别是两者在如何实现信息的可靠传递方面不同。

    (2)TCP协议中包含了专门的传递保证机制,当数据接收方收到发送方传来的信息时,会自动向发送方发出确认消息;发送方只有在接收到该确认消息之后才继续传送其它信息,否则将一直等待直到收到确认信息为止。所以TCP必UDP多了建立连接的时间。相对UDP而言,TCP具有更高的安全性和可靠性。TCP协议传输的大小不限制,一旦连接被建立,双方可以按照一定的格式传输大量的数据,而UDP是一个不可靠的协议,大小有限制,每次不能超过64K。

    (3)相对于TCP协议,UDP协议的另外一个不同之处在于如何接收突法性的多个数据报。不同于TCP,UDP并不能确保数据的发送和接收顺序。

表1 三种协议的性能对比

协议名称 复杂性 连接建 立时间 可靠性 是否确保数据报发送和接受顺序 实时性 适用范围 是否支持组播
RTP/RTCP 实时音视 频媒体传输 支持
TCP 数据和控制信令传输 不支持
UDP 音视频媒体传输 支持
  

3.3  BS和CS

3.3.1  CS架构介绍(client server,客户端服务器架构)

(1)就像QQ,百度网盘,爱奇艺等客户端,他们每家公司都有各自的服务器,客户端,但是,客户不可能在电脑上安装所有的客户端,但是又想访问他们的服务器,于是出现了下面的BS

3.3.2  BS架构介绍(broswer server,浏览器服务器架构)

(1)浏览器是一个公用的客户端,用户可以登入这个客户端去访问所有的服务器,比如在线看爱奇艺,在线登入网盘等

猜你喜欢

转载自blog.csdn.net/qq_40334837/article/details/80093746