网络编程的基础知识
协议
可理解为规则,是数据传输和数据解释的规则。
TCP协议注重数据的传输,http协议注重数据的解释
传输层:常见协议有TCP/UDP协议
应用层:常见协议有HTTP协议,FTP协议。
网络层:常见协议有ARP协议,RARP协议。
网络接口层:常见协议有ARP协议,RAPP协议。
HTTP 超文本传输协议(Hyper Text Transfer Protocol)是互联网上应用最为广泛的协议。
FTP文件传输协议(File Transfer Protocol)
TCP(Transmission Control Protocol:传输控制协议;面向连接,可靠传输,用三次握手和滑动窗口机制来保证传输的可靠性和进行流量控制,
端口号可以分为三个范围:“已知端口”、“注册端口”以及“动态和/或专用端口”。“已知端口”是从 0 到 1023 的端口。这个就是你所谓的公共端口。“注册端口”是从 1024 到 49151 的端口。“动态和/或专用端口”是从 49152 到 65535 的端口。理论上,不应为服务分配这些端口。
UDP(User Datagram Protocol):用户数据报协议;面向无连接,不可靠传输
IP(Internet Protocol):Internet协议,负责TCP/IP主机间提供数据报服务,进行数据封装并产生协议头,TCP与UDP协议的基础。
ICMP(Internet Control Message Protocol):Internet控制报文协议。ICMP协议其实是IP协议的的附属协议,IP协议用它来与其它主机或路由器交换错误报文和其它的一些网络情况,在ICMP包中携带了控制信息和故障恢复信息。
ARP(Address Resolution Protocol)协议:正向地址解析协议, 通过已知的IP,寻找对应的MAC地址(面试考过)。
RARP(Reverse Address Resolution Protocol):逆向地址解析协议,通过MAC地址确定IP地址。
C/S和B/S模式
C/S模式:传统的网络应用设计模式,客户机(client)/服务器(server)模式,需要在通讯两端各自部署客户机和服务器来完成数据通信。建立在局域网的基础上
B/S模式:浏览器(Browser)/服务器(Server)模式,只需在一端部署服务器,而另外一端使用每台PC都默认配置的浏览器即完成的数据的传输,建立在广域网的基础上的.
C/S优点:1.协议选用灵活。2.缓存数据 如大型游戏,QQ 缺点:开发工作量较大,调试困难
B/S优点:跨平台,开发工作量较小 如QQ农场
OSI七层模型
数据链路层又分为2个子层:逻辑链路控制子层(LLC)和媒体访问控制子层(MAC)。
MAC子层处理CSMA/CD算法、数据出错校验、成帧等;LLC子层定义了一些字段使上次协议能共享数据链路层。 在实际使用中,LLC子层并非必需的。
这个没找到合适的例子
<7> 物理层
MAC(Media Access Control或者Medium Access Control)地址,意译为媒体访问控制,或称为物理地址、硬件地址,用来定义网络设备的位置。在OSI模型中,第三层网络层负责 IP地址,第二层数据链路层则负责 MAC地址。因此一个主机会有一个MAC地址,而每个网络位置会有一个专属于它的IP地址。
MAC地址是网卡决定的,是固定的
TTL:生命周期 单位:每一跳
NAT(Network Address Translation)网络地址转换,其功能是将企业内部自行定义的非法IP地址转换为Internet公网上可识别的合法IP地址。NAT技术能较好解决现阶段IPV4地址短缺的问题。
打洞机制
我们假设两个扣扣A,B,他们通信需要通过腾讯的服务器。也就是A发送消息给B的话,需要通过腾讯服务器进行一次转发,才到B那里。但像视频通话这要实时性要求比较高的通信,再用这种方式就不能保证他们通信的实时性,如果能想一个办法让他们直接通信,这样实时性就会高很多。但是我们所知的路由器是有一个保护机制的(对于陌生的IP第一次发送过来的数据包,会进行屏蔽或丢弃,主要是为了防止网络的恶意攻击),A跟B想进行通信的话所携带数据包的IP就必须是熟悉的,所以说这个时候就需要在两个路由器之间打一个洞,而这件事情上腾讯就参与进来了。
简单来说在我们登入扣扣的时候,就会访问腾讯服务器,而腾讯服务器也会回一个数据包,这个数据包会携带腾讯服务器公网的IP,相对于来说服务器的公网IP在A、B那里都是熟悉的IP(就是为了防止陌生IP屏蔽),而服务器借助公网IP帮助A、B完成打洞(打洞就是实现一种通路),当它把这个洞打好以后A、B就可以实时通信。打洞是由服务器来完成的,最终的目的就是为了提高数据传输的效率。
公网IP-公:直接访问
公网IP-私网IP:NAT映射
私网IP-公:NAT映射
私-私:NAT映射,打洞机制
MTU
MTU通信术语,最大传输单元(Maximum Transmisson Unit,MTU),是指一种通信协议的某一层上面所能通过的最大数据包大小(以字节为单位),最大传输单元这个参数通常与通信接口有关(网络接口卡、串口等)。
以下协议的MTU:
FDDI协议:4352字节;
以太网协议:1500字节
PPPoE(ADSL)协议:1492字节
Point-to-Point:4470字节