这一部分编程较为简单,都有固定的模式,主要是对程序和协议的理解难以掌握,对于这种情况,如何去学好网络编程呢?
那么以下几个问题会让你初步深入网络编程,让你揭开网络编程的神秘面纱;
【1】什么是网络?
把独立自主的计算机连接起来就构成了网络,构建网络是为了实现计算机与计算机之间的信息交互和资源共享;
【2】什么是互联网?
把网络和网络连接起来就构成了互联网;
【3】OSI七层模型和tcp/ip模型对比,并说明各层的功能。
OSI七层模型:应表会传,网络层,数据链路层,物理层
tcp/ip四层模型:应用层 ,传输层 ,网络层 ,数据链路层;
1)ip地址是什么?MAC地址是什么?ip地址分类中 A类 B类 C类表示什么范围?
ip地址是在网络中用来唯一标识一台计算机的地址;MAC是机器的物理地址;
A:1.0.0.0 到126.0.0.0。可用的A类网络有126个,每个网络能容纳1亿多个主机。
B:128.0.0.0到191.255.255.255。可用的B类网络有16382个,每个网络能容纳6万多个主机
C:192.0.0.0到223.255.255.255。C类网络可达209万余个,每个网络能容纳254个主机;
D:广播;E:保留区;
2)tcp和udp协议的特点?
tcp是面向连接的,可靠的,基于流的服务;
udp是无连接的,不可靠的,基于数据报的服务;
既然tcp是面向连接的,那么体现在哪呢?是不是每次发送数据之前都要建立连接,怎么建立?代码执行到什么时候会进行三次握手?tcp可靠的特点体现在哪里?
tcp协议的通信双方必须建立tcp链接,并且在内核中为了该链接维持一些必要的数据结构;如连接状态,读写缓冲区,诸多定时器等;每次都要建立连接,通过三次握手来建立;
代码执行到connect()时会进行三次握手,建立连接;tcp可靠的原因:tcp协议有应认确答机制,超时重传机制;并且报头中有序列号,恢复报文顺序;还有滑动窗口控制流量;
拥塞控制;
【4】网络编程代码实现:
socket bind() listen() accept() recv() send() close() connect()