Linux网络编程(1)网络编程基础知识

1.常见的网络应用程序的两种设计模式
C/S模式
传统的网络应用设计模式,客户机(client)/服务器(server)模式。
需要在通讯两端各自部署客户机和服务器来完成数据通信
如各种大型应用软件和大型网络游戏
优缺点:能够缓存处理大量的数据,可以灵活采用通信协议
但是现对于B/S模式开发量巨大繁琐,对用户安全有一定影响

B/S模式
浏览器()/服务器(server)模式。只需在一端部署服务器,
而另外一端使用每台PC都默认配置的浏览器即可完成数据的传输
常见的各种网页应用
优缺点:移植性强,开发量小,但是数据传输和处理的能力有限
协议的选择只能使用http协议

协议的概念:为了完成A,B两台电脑间文件的传输而设置好的传输规则,
假设,A、B双方欲传输文件。规定:
第一次,传输文件名,接收方接收到文件名,应答OK给传输方;
第二次,发送文件的尺寸,接收方接收到该数据再次应答一个OK;
第三次,传输文件内容。同样,接收方接收数据完成后应答OK表示文件内容接收成功。
由此,无论A、B之间传递何种文件,都是通过三次数据传输来完成。A、B之间形成了一个最简单的数据传输规则。双方都按此规则发送、接收数据。A、B之间达成的这个相互遵守的规则即为协议。
这种仅在A、B之间被遵守的协议称之为原始协议。当此协议被更多的人采用,不断的增加、改进、维护、完善。最终形成一个稳定的、完整的文件传输协议,被广泛应用于各种文件传输过程中。该协议就成为一个标准协议。最早的ftp协议就是由此衍生而来。
TCP协议注重数据的传输。http协议着重于数据的解释。

典型协议

传输层 常见协议有TCP/UDP协议。
应用层 常见的协议有HTTP协议,FTP协议。
网络层 常见协议有IP协议、ICMP协议、IGMP协议。
网络接口层 常见协议有ARP协议、RARP协议。
TCP传输控制协议(Transmission Control Protocol)是一种面向连接的、可靠的、基于字节流的传输层通信协议。
UDP用户数据报协议(User Datagram Protocol)是OSI参考模型中一种无连接的传输层协议,提供面向事务的简单不可靠信息传送服务。
HTTP超文本传输协议(Hyper Text Transfer Protocol)是互联网上应用最为广泛的一种网络协议。
FTP文件传输协议(File Transfer Protocol)
IP协议是因特网互联协议(Internet Protocol)
ICMP协议是Internet控制报文协议(Internet Control Message Protocol)它是TCP/IP协议族的一个子协议,用于在IP主机、路由器之间传递控制消息。
IGMP协议是 Internet 组管理协议(Internet Group Management Protocol),是因特网协议家族中的一个组播协议。该协议运行在主机和组播路由器之间。
ARP协议是正向地址解析协议(Address Resolution Protocol),通过已知的IP,寻找对应主机的MAC地址。
RARP是反向地址转换协议,通过MAC地址确定IP地址

网络通信的基本模型
1.OSI的七层模型

OSI是Open System Interconnection的缩写,意为开放式系统互联。国际标准化组织(ISO)制定了OSI模型,该模型定义了不同计算机互联的标准,是设计和描述计算机网络通信的基本框架。OSI模型把网络通信的工作分为7层,分别是物理层、数据链路层、网络层、传输层、会话层、表示层和应用层。
这是一种事实上被TCP/IP 4层模型淘汰的协议。在当今世界上没有大规模使用。
物理层 – 双绞线, 光纤
数据链路层 – 数据的传输和错误检测
网络层 – 为数据包选择路由
传输层 – 提供端对端的接口 tcp/udp
会话层 – 解除或建立与别的节点的联系
表示层 – 数据格式化,代码转换,数据加密
应用层 – 文件传输,电子邮件,文件服务,虚拟终端

2.TCP/IP的四层网络模型
1.链路层(数据链路层/网络接口层):包括操作系统中的设备驱动程序、计算机中对应的网络接口卡
2.网络层(互联网层):处理分组在网络中的活动,比如分组的选路。
**3.运输层:**主要为两台主机上的应用提供端到端的通信。
4.应用层:负责处理特定的应用程序细节。

Linux网络编程(1)网络编程基础知识_第1张图片Linux网络编程(1)网络编程基础知识_第2张图片
在应用层软件发送数据给另一台电脑时候,首先通过应用层软件的第一次封装将该数据封装成数据包,接下来的依次通过传输层,网络层,数据链路层对该数据包进行多次封装后在端口发送出去,这几层的封装都是由操作系统完成的,之后在另一台电脑接收到该数据包后,依次通过数据链路层,网络层,传输层和应用层对该数据包通过相应的协议解包,最后得到该数据高的原始发送数据。

在网络通信的各层模型中,各自对应着多种协议
1.数据链路层的以太网帧协议
Linux网络编程(1)网络编程基础知识_第3张图片Linux网络编程(1)网络编程基础知识_第4张图片在以太网帧协议中,假设两个公网IP需要进行通信,首先需要发送端和接收端的IP地址和mac地址,mac地址是网卡的硬件地址,每个mac地址是唯一的,在第一次通信中,仅仅知道接收端的ip地址,所以在以太网帧协议中,第一次将发送arp数据包来获取接收端的mac地址,在第一次发送端发送的arp数据包中,目的地址的以太网mac地址位置,先填充ff:ff:ff:ff:ff:ff,依次填写发送端mac地址,发送的帧类型,0800表示发送的是arp数据包,0800表示发送的是正常数据包随后填充发送端mac地址,发送端ip地址,目的以太网地址(mac地址,未知,依旧填充ff:ff:ff:ff:ff:ff),目的ip地址,
在接收端接收到arp数据包后将进行回应,将本身的mac地址填充进arp数据包中,在获得了接收端的mac地址后,发送端将于接收端进行正常通信和文件传输。

2.网络层的IP协议

Linux网络编程(1)网络编程基础知识_第5张图片

3.传输层的TCP/UDP协议

udp协议
Linux网络编程(1)网络编程基础知识_第6张图片在网络传输中,通过IP地址可以确定一台主机,通过端口号可以确定一个进程,端口号为16位数据,端口号的最大值为2的16次方,即端口号的最大值为65536,在传输层中,因为已经通过网络层ip协议获取了ip地址,所以仅需要端口号就能进行通信.

TCP协议
Linux网络编程(1)网络编程基础知识_第7张图片16位源端口号
16位目的端口号
32位序号
32为确认序号 (与32位序号用于TCP的三次握手中)
6位标志位
16位窗口大小(一个缓冲区大小,用于接收数据)

网络协议的封包
Linux网络编程(1)网络编程基础知识_第8张图片用户在应用层发送数据时,先是在应用层的应用软件将自己的传输协议添加至数据的数据头形成第一次封装的数据包,在通过网络层后,又将TCP/UDP协议的数据添加至数据头,同理,经过层层封包后,该数据包的数据头包含了各层协议所需的各种数据,如ip,mac地址,端口号,状态码和校验码等等,在接收端接收到了该数据包后,通过层层解包,最终在应用层准确无误的接收到原始的发送数据。

tcp, udp传输层协议
tcp: 面向连接的安全的流式传输协议
连接的时候, 进行三次握手
数据丢失之后, 会进行数据重传
数据发送的时候, 会进行数据确认

udp: 面向无连接的不安全的报式传输
连接的时候不会握手
数据发送出去 之后就不管了
如果数据包丢失会全丢
不存在丢失一半的情况

你可能感兴趣的:(基础知识)