目录
一、网络编程学习大纲
二、回顾系统编程中进程的通信方式
1、 管道
2、信号
3、IPC对象
三、网络编程(套接字编程)
1、特点
2、协议
3、历史
四、网络应用程序设计模式
1、C/S模式
2、B/S模式
3、优缺点
五、计算机网络体系结构模型
1、概念
2、作用
3、分类
4、OSI参考模型(七层模型)
5、TCP/IP协议模型(四层)
六、TCP/IP网络模型通信过程
1、两台计算机通过TCP/IP协议通讯的过程
2、数据包封装
3、以太网帧格式
4、ARP数据报格式
5、IP段格式
6、TCP数据报格式
七、传输层协议
TCP协议(打电话)
UDP协议(信)
八、网络编程中几个重要概念
1、socket --> 插座,套接字 插座的种类繁多,就像很多个协议一样,必须提前设置好协议。
2、IP地址
3、端口号(16位)
4、字节序
九、TCP通信
1、通信过程
2、客户端API
1、建立套接字
2、发起连接 -拨打电话
3、发送数据-------write send
4、关闭文件--close
服务器端API:
1、绑定 bind
2、设置铃声
3、等待客户端的连接 --accept
4、接收数据 recv
练习3: 修改代码,实现TCP客户端与TCP服务器互相可以收跟发。
练习4: 写一个回射服务器,这个服务器功能就是客户端发送什么数据给服务器,服务器都会将数据回发到客户端。
一、网络编程学习大纲
1、计算机网络体系结构模型、网络编程专业术语(socket/IP/端口号)、通信时序图
2、传输层协议: TCP协议/UDP协议。
3、多进程并发服务器、多线程并发服务器
4、网络编程IO模型:阻塞IO/非阻塞IO/多路复用/信号驱动
5、超时接收数据方法
二、回顾系统编程中进程的通信方式
1、 管道
无名管道(只能作用亲缘关系) -- pipe()
有名管道(任意两个进程) --- mkfifo()
2、信号
发送信号 -- kill()
捕捉信号 -- signal()
3、IPC对象
消息队列---接收特征类型的数据 -- ftok() msgget() msgsnd() msgrcv() msgctl()
共享内存 --> 双方进程可以同时对一片内存进行读写 shmget() shmat() shmdt() shmctl()
信号量 --> 不属于通信方式,只是一种互斥的量 semget() semop() semctl()
特点: 只能在同一台主机上内部通信,不能跨平台。
三、网络编程(套接字编程)
1、特点
既可以在同一台主机上内部通信,也可以在不同主机之间通信。
自己的ubuntu ----自己的ubuntu
自己的ubuntu -----同一个局域网内除了自己之外任意一台主机
总结一下: 网络通信前提: 只要你在某个局域网内,就可以与局域网任意一台主机通信。
2、协议
1)概念
应用的角度出发,在不同的主机之间通信,双方都必须遵循的同一种规则。协议可理解为“规则”, 是数据传输和数据的解释的规则。
假设,A、B双方欲传输文件。
规定:
第一次,传输文件名,接收方接收到文件名,应答OK给传输方;
第二次,发送文件的尺寸,接收方接收到该数据再次应答一个OK;
第三次,传输文件内容。同样,接收方接收数据完成后应答OK表示文件内容接收成功。
由此,无论A、B之间传递何种文件,都是通过三次数据传输来完成。A、B之间形成了一个最简单的数 据传输规则。双方都按此规则发送、接收数据。A、B之间达成的这个相互遵守的规则即为协议。
这种仅在A、B之间被遵守的协议称之为原始协议。当此协议被更多的人采用,不断的增加、改进、维 护、完善。最终形成一个稳定的、完整的文件传输协议,被广泛应用于各种文件传输过程中。该协议 就成为一个标准协议。最早的ftp协议就是由此衍生而来。
TCP协议注重数据的传输。http协议着重于数据的解释。
2)常见的协议
传输层 常见协议有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地址。
3、历史
ARPAnet(阿帕网):
1)历史:
1958年美国总统艾森豪威尔向美国国会提出建立DARPA (Defense Advanced Research Project
Agency),即国防部高级研究计划署,简称ARPA。1968年6月DARPA提出“资源共享计算机网络”
(Resource Sharing Computer Networks),目的在于让DARPA的所有电脑互连起来,这个网络就叫做ARPAnet。
2)使用的协议:网络控制协议(Network Control Protoco,NCP)
3) 缺点:不能互联不同类型的计算机 和 不同类型的操作系统,同时也没有纠错功能
Internet(因特网):
1)由于ARPAnet网络的局限性,引入了TCP/IP协议。TCP/IP是Internet上所有网络和主机之间进行交 流的标准连接协议。通常所说的TCP/IP协议实际上包含了大量的协议和应用,且由多个独立定义的协议组合在一起,因此,更确切地说,应该称之为TCP/IP协议簇。
TCP/IP协议: 传输控制协议/因特网互联协议
TCP协议: 用于检测网络中传输差错
IP协议: 负责不同的网络之间的通信
通俗讲: TCP负责发送传输问题,一旦有问题发出信号,要求重新传输,直到数据安全到达对方为止。
IP给每一台联网设备规定一个地址
四、网络应用程序设计模式
1、C/S模式
传统的网络应用设计模式,客户机(client)/服务器(server)模式。需要在通讯两端各自部署客户机和服务器来完成数据通信。
2、B/S模式
浏览器(browser)/服务器(server)模式。只需在一端部署服务器,而另外一端使用每台PC都默认配置的浏览器即可完成数据的传输。
3、优缺点
对于C/S模式来说,其优点明显。客户端位于目标主机上可以保证性能,将数据缓存至客户端本地,从而提高数据传输效率。且,一般来说客户端和服务器程序由一个开发团队创作,所以他们之间所采用 的协议相对灵活。可以在标准协议的基础上根据需求裁剪及定制。例如,腾讯公司所采用的通信协 议,即为ftp协议的修改剪裁版。 因此,传统的网络应用程序及较大型的网络应用程序都首选C/S模式进行开发。如,知名的网络游戏魔 兽世界。3D画面,数据量庞大,使用C/S模式可以提前在本地进行大量数据的缓存处理,从而提高观感。
C/S模式的缺点也较突出。由于客户端和服务器都需要有一个开发团队来完成开发。工作量将成倍提 升,开发周期较长。另外,从用户角度出发,需要将客户端安插至用户主机上,对用户主机的安全性构成威胁。这也是很多用户不愿使用C/S模式应用程序的重要原因。
B/S模式相比C/S模式而言,由于它没有独立的客户端,使用标准浏览器作为客户端,其工作开发量较小。只需开发服务器端即可。另外由于其采用浏览器显示数据,因此移植性非常好,不受平台限制。如早期的偷菜游戏,在各个平台上都可以完美运行。
B/S模式的缺点也较明显。由于使用第三方浏览器,因此网络应用支持受限。另外,没有客户端放到对方主机上,缓存数据不尽如人意,从而传输数据量受到限制。应用的观感大打折扣。第三,必须与浏览器一样,采用标准http协议进行通信,协议选择不灵活。因此在开发过程中,模式的选择由上述各自的特点决定。根据实际需求选择应用程序设计模式。
五、计算机网络体系结构模型
1、概念
指的是主机内部集成的结构和每层协议的集合。每台主机本身就存在一个相同的网络体系结构。