3.9.1.linux网络编程框架

参考:https://blog.csdn.net/guoguo527/article/details/52078962

本节讲述网络编程的框架,分层思想和TCP/IP协议的介绍,BS架构和CS架构的介绍等。

3.9.1.1、网络是分层的

(1)OSI 7层模型

传输层-应用层:定义应用程序的功能, 剩下三层主要通过网络的端到端的数据流。OSI七层模型是一个理论模型,更多的则是把它作为分析、评判各种网络技术的依据。

物理层 为数据链路层提供物理链接,在其串行传送比特流(传送数据的单位比特)。

数据链路层 负责在网络节点间德尔线路上通过检查、流量控制和重发手段,无差错的传送数据(帧单位)。为做到这一点,在每一帧中必须同时带有同步、地址、差错控制及流量控制等信息。

网络层 网络层的任务就是选择合适的路由和交换节点,使数据源在传送层传下来的分组信息能够无误的按照地址找到目的地,并交付给相应的传输层,也就是完成网络的寻址功能。

传输层 传送层是高低层之间的接口层。数据传送的单位是报文,当报文较长时将它分割若干组,然后交给网络层进行传送。传输层是计算机网络协议最关键的一层,该层以上的个各层不在管理信息传输问题。

会话层 该层对传输的报文提供管理服务,在两个不同的系统互相通信的应用进程之间建立、组织、协调交互。列如:确定是双工或者是半双工工作

表示层 该层的任务是把传送的数据的抽象语法变为传送语法、即把不同计算机内部不同表示形式转换为通信中的标准鄙视形式。此外对传送的数据加密或解密、正文压缩或解压。

应用层 该层直接面向用户,是OSI中最高层。为用户提供应用的接口,既提供不同计算机间的文件传送、访问与管理、电子邮件的处理、不同计算机通过网络交互访问的需您终端功能。

七层结构记忆方法:应、表、会、传、网、数、物

应用层协议需要掌握的是:HTTP(Hyper text transfer protocol)、FTP(file transfer protocol)、SMTP(simple mail transfer rotocol)、POP3(post office protocol 3)、IMAP4(Internet mail access protocol)

(2)网络为什么要分层:网络太复杂了

(3)网络分层的具体表现

3.9.1.2、TCP/IP协议引入

(1)TCP/IP协议是用的最多的网络协议实现

* TCP/IP是一个计算机通信的一组协议,称它为TCP/IP协议族。在其中还包含了其他的协议(http、telnet、icmp、arp、rarp),正因为TCP/IP协议很重要,就以它们两个命名。

(2)TCP/IP分为4层,对应OSI的7层

* 应用层:对应OSI中的应用层、表示层、会话层
* 物理链路层:对应OSI中的数据链路层、物理层(也有叫网络接口层)

OSI七层和TCP/IP四层的关系

* OSI引入了服务、接口、协议、分层的概念,TCP/IP借鉴了OSI的这些概念建立TCP/IP模型。
* OSI先有模型,后有协议,先有标准,后进行实践;而TCP/IP则相反,先有协议和应用再提出了模型,且是参照的OSI模型。
* OSI是一种理论下的模型,而TCP/IP已被广泛使用,成为网络互联事实上的标准。

TCP:transmission control protocol 传输控制协议UDP:user data protocol 用户数据报协议

(3)我们编程时最关注应用层,了解传输层,网际互联层和网络接入层不用管

1、TCP/IP为应用提供服务(所谓的everything over Ip)

2、TCP/IP允许IP协议在各式各样的网络构成的互联网上运行(所谓的IP over everything)

UDP和TCP对比

UDP是一个不可靠,无链接的协议,主要适用于不需要对报文进行排序的流量控制的场合。

TCP是一个面向链接的,可靠的协议。它将一台主机发送的字节流无差错地发往互联网的其他主机。

在发送端,TCP负责把上层传送下来的字节流分成报文段并传递给下层。

在接收端,TCP负责把收到的报文进行重组后递交给上层。

TCP协议还要处理端到流量控制,以避免缓慢接收的接收方没有足够的缓冲区接收发送方的大量数据。

IP协议是TCP/IP协议族中最核心的协议,它提供不可靠,无链接的服务,也即依赖其他层的协议进程差错控制。在局域网中,IP协议往往被封装在以太网帧中传输。而所有的TCP、UDP、ICMP、IGMP数据都被封装在IP数据报中传输。

TCP为点对点协议,这意味这各个客户需要分开客户机/服务器链接,因而无法在网络级实现对多个客户机的数据广播。如果有一个数据流必须同时被传送到多个客户机,服务器必须传送数据流的副本到各个客户机。

TCP能够根据网络带宽和拥挤程度动态地调节传送速度并重新发送丢失的数据包,这样虽然保证了数据传输的可靠性,但是对服务器资源耗费较大,在数据流大的场合难以保证数据流传输的实时性。

UDP为不可靠传送协议,在发送段,UDP传送数据的速度仅仅是受应用程序生成数据的速度,计算机的能力和传输带宽的限制;在接收端,UDP把每个消息段放在队列中,应用程序每次从队列中读一个消息段。

UDP协议不需要维护连接状态,也不认为每个数据包都必须到达接受端,因此网络负荷比TCP小,传输速度也要比TCP快;但在网络越拥挤时,越有更多的数据包丢失。

RTMP协议是一个专门为高效传输视频,音频和数据而设计的协议。它通过建立一个二进制TCP连接或者连接HTTP隧道实现实时的视频和声音传输。

共享对象是RTMP数据中一种比较重要的数据类型,任何客户端改变数据时,共享对象能够及时更新服务器段的数据,这样,每个客户端都能够及时了解到数据的变化。

RTMP比传统媒介服务器流出的媒介协议支持更多。 它支持可能包含声音,影像和脚本数据从服务器到客户和从客户到服务器多条线路的动态传输。RTMP对声音、影像和脚本数据分别处理。

声音和视频数据被分开地缓冲在服务器中。如果声音数据在声音缓冲器中达到某一极限,所有在缓冲器中的数据将被丢掉,并且最近到达的数据被允许开始收集在缓冲中并被送到各个客户。视频数据被以相似的方式处理,不同是当新的关键帧到达时,缓冲器中数据才被清除。在丢掉旧的帧数据时,如果发现客户端的数据有误,则将新旧两个不同的帧进行拟合。

RTMP对数据给予不同的优先级别。在实时交谈中,声音是最重要的,影像给予低优先级,而脚本数据被给予的优先权介于声音和影像中间。

RTMP协议可以创建多个数据流,但是每个数据流只能有一个方向。

使用RTMP可以构建这样的一个系统,客户端可以同时与RTMP服务器和应用服务器进行交互,使得服务端的负荷得以分散,虽然在这种改进的系统结构中,RTMP服务器的性能要求比较高。

3.9.1.3、BS和CS

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

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

原文地址:https://www.cnblogs.com/Ocean-Star/p/9241396.html

时间: 2024-11-02 17:50:36

3.9.1.linux网络编程框架的相关文章

linux网络编程框架

OSI七层模型与TCP四层模型 OSI七层模型与TCP四层模型 BS和CS服务器架构 (1)CS架构介绍(client server,客户端服务器架构)(2)BS架构介绍(broswer server,浏览器服务器架构) TCP协议 (1)建立连接需要三次握手(2)建立连接的条件:服务器listen时客户端主动发起connect(3)关闭连接需要四次握手(4)服务器或者客户端都可以主动发起关闭 注:这些握手协议已经封装在TCP协议内部,socket编程接口平时不用管 TCP如何保证可靠传输(1)

linux 网络编程需要学习的内容

Linux C++培训发 课程模块 Linux C++全科班课程由以下模块组成: Module01 - Linux系统基础 由于本系列课程基于Linux(或UNIX),熟悉Linux操作系统是必要的前提. 该模块的课程包含以下方面的内容: 常用Unix/Linux命令熟悉文件管理.文本处理.进程管理.网络.系统管理等各个方面大约100个常用的命令. 深入了解bash了解Linux默认shell: bash 的语法.命令执行.I/O重定向.任务控制等. 正则表达式基础由于UNIX/Linux中很多

Linux网络编程“惊群”问题总结

1.前言 我从事Linux系统下网络开发将近4年了,经常还是遇到一些问题,只是知其然而不知其所以然,有时候和其他人交流,搞得非常尴尬.如今计算机都是多核了,网络编程框架也逐步丰富多了,我所知道的有多进程.多线程.异步事件驱动常用的三种模型.最经典的模型就是Nginx中所用的Master-Worker多进程异步驱动模型.今天和大家一起讨论一下网络开发中遇到的“惊群”现象.之前只是听说过这个现象,网上查资料也了解了基本概念,在实际的工作中还真没有遇到过.今天周末,结合自己的理解和网上的资料,彻底将“

嵌入式 Linux网络编程(五)——epoll机制

嵌入式 Linux网络编程(五)--epoll机制 一.epoll简介 epoll是在2.6内核中提出的,是select和poll的增强版本.epoll更加灵活,没有描述符限制,使用一个文件描述符管理多个描述符,将用户关系的文件描述符的事件存放到内核的一个事件表中. 1.epoll函数 #include <sys/epoll.h> int epoll_create(int size); 创建一个epoll的句柄,size表示监听的文件描述的数量 int epoll_ctl(int epfd,

linux网络编程——套接字(socket)入门

1.套接字的基本结构 struct sockaddr 这个结构用来存储套接字地址. 数据定义: struct sockaddr { unsigned short sa_family; /* address族, AF_xxx */ char sa_data[14]; /* 14 bytes的协议地址 */ }; sa_family 一般来说,都是"AFINET". sa_data 包含了一些远程电脑的地址.端口和套接字的数目,它里面的数据是杂溶在一切的. 为了处理struct socka

Linux网络编程&amp;内核学习

c语言: 基础篇 1.<写给大家看的C语言书(第2版)> 原书名: Absolute Beginner's Guide to C (2nd Edition) 原出版社: Sams 作者: (美)Greg Perry    [作译者介绍] 译者: 谢晓钢 刘艳娟 丛书名: 图灵程序设计丛书 C/C++系列 出版社:人民邮电出版社 ISBN:9787115216359上架时间:2009-12-10出版日期:2010 年1月开本:16开页码:308 说明:这本是入门最好的,最简单,最好懂 2.<

Python四大主流网络编程框架

目前Python的网络编程框架已经多达几十个,逐个学习它们显然不现实.但这些框架在系统架构和运行环境中有很多共通之处,本文带领读者学习基于Python网络框架开发的常用知识,及目前的4种主流Python网络框架:Django.Tornado.Flask.Twisted. 网络框架及MVC架构 所谓网络框架是指这样的一组Python包,它能够使开发者专注于网站应用业务逻辑的开发,而无须处理网络应用底层的协议.线程.进程等方面.这样能大大提高开发者的工作效率,同时提高网络应用程序的质量. 在目前Py

Java网络编程和NIO详解9:基于NIO的网络编程框架Netty

Java网络编程和NIO详解9:基于NIO的网络编程框架Netty 转自https://sylvanassun.github.io/2017/11/30/2017-11-30-netty_introduction/ netty是基于NIO实现的异步事件驱动的网络编程框架,学完NIO以后,应该看看netty的实现,netty框架涉及的内容特别多,这里只介绍netty的基本使用和实现原理,更多扩展的内容将在以后推出. 本系列文章首发于我的个人博客:https://h2pl.github.io/ 欢迎

linux网络编程-(socket套接字编程UDP传输)

今天我们来介绍一下在linux网络环境下使用socket套接字实现两个进程下文件的上传,下载,和退出操作! 在socket套接字编程中,我们当然可以基于TCP的传输协议来进行传输,但是在文件的传输中,如果我们使用TCP传输,会造成传输速度较慢的情况,所以我们在进行文件传输的过程中,最好要使用UDP传输. 在其中,我们需要写两个程序,一个客户端,一个服务端,在一个终端中,先运行服务端,在运行客户端,在服务端和客户端都输入IP地址和端口号,注意服务端和客户端的端口号要相同,然后选择功能,在linux