网络编程的基础知识

协议                                                                                                                                     

可理解为规则,是数据传输和数据解释的规则。

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七层模型                                                                                                                  

各层功能定义
        这里我们只对OSI各层进行功能上的大概阐述,不详细深究,因为每一层实际都是一个复杂的层。后面我也会根据个人方向展开部分层的深入学习。这里我们就大概了解一下。我们从最顶层——应用层 开始介绍。整个过程以公司A和公司B的一次商业报价单发送为例子进行讲解。
<1>    应用层
        OSI参考模型中最靠近用户的一层,是为计算机用户提供应用接口,也为用户直接提供各种网络服务。我们常见应用层的网络服务协议有:HTTP,HTTPS,FTP,POP3、SMTP等。
        实际公司A的老板就是我们所述的用户,而他要发送的商业报价单,就是应用层提供的一种网络服务,当然,老板也可以选择其他服务,比如说,发一份商业合同,发一份询价单,等等。
<2>    表示层
 
        表示层提供各种用于应用层数据的编码和转换功能,确保一个系统的应用层发送的数据能被另一个系统的应用层识别。如果必要,该层可提供一种标准表示形式,用于将计算机内部的多种数据格式转换成通信中采用的标准表示形式。数据压缩和加密也是表示层可提供的转换功能之一。
        由于公司A和公司B是不同国家的公司,他们之间的商定统一用英语作为交流的语言,所以此时表示层(公司的文秘),就是将应用层的传递信息转翻译成英语。同时为了防止别的公司看到,公司A的人也会对这份报价单做一些加密的处理。这就是表示的作用,将应用层的数据转换翻译等。
<3>    会话层
        会话层就是负责建立、管理和终止表示层实体之间的通信会话。该层的通信由不同设备中的应用程序之间的服务请求和响应组成。      
        会话层的同事拿到表示层的同事转换后资料,(会话层的同事类似公司的外联部),会话层的同事那里可能会掌握本公司与其他好多公司的联系方式,这里公司就是实际传递过程中的实体。他们要管理本公司与外界好多公司的联系会话。当接收到表示层的数据后,会话层将会建立并记录本次会话,他首先要找到公司B的地址信息,然后将整份资料放进信封,并写上地址和联系方式。准备将资料寄出。等到确定公司B接收到此份报价单后,此次会话就算结束了,外联部的同事就会终止此次会话。
<4>   传输层
        传输层建立了主机端到端的链接,传输层的作用是为上层协议提供端到端的可靠和透明的数据传输服务,包括处理差错控制和流量控制等问题。该层向高层屏蔽了下层数据通信的细节,使高层用户看到的只是在两个传输实体间的一条主机到主机的、可由用户控制和设定的、可靠的数据通路。我们通常说的,TCP UDP就是在这一层。端口号既是这里的“端”。
        传输层就相当于公司中的负责快递邮件收发的人,公司自己的投递员,他们负责将上一层的要寄出的资料投递到快递公司或邮局。
<5>   网络层
       本层通过IP寻址来建立两个节点之间的连接,为源端的运输层送来的分组,选择合适的路由和交换节点,正确无误地按照地址传送给目的端的运输层。就是通常说的IP层。这一层就是我们经常说的IP协议层。IP协议是Internet的基础。
        网络层就相当于快递公司庞大的快递网络,全国不同的集散中心,比如说,从深圳发往北京的顺丰快递(陆运为例啊,空运好像直接就飞到北京了),首先要到顺丰的深圳集散中心,从深圳集散中心再送到武汉集散中心,从武汉集散中心再寄到北京顺义集散中心。这个每个集散中心,就相当于网络中的一个IP节点。
<6>   数据链路层 
        将比特组合成字节,再将字节组合成帧,使用链路层地址 (以太网使用MAC地址)来访问介质,并进行差错检测。

     数据链路层又分为2个子层:逻辑链路控制子层(LLC)和媒体访问控制子层(MAC)。

        MAC子层处理CSMA/CD算法、数据出错校验、成帧等;LLC子层定义了一些字段使上次协议能共享数据链路层。 在实际使用中,LLC子层并非必需的。

        这个没找到合适的例子

<7>  物理层     

        实际最终信号的传输是通过物理层实现的。通过物理介质传输比特流。规定了电平、速度和电缆针脚。常用设备有(各种物理设备)集线器、中继器、调制解调器、网线、双绞线、同轴电缆。这些都是物理层的传输介质。
         快递寄送过程中的交通工具,就相当于我们的物理层,例如汽车,火车,飞机,船。
转载:https://www.cnblogs.com/qishui/p/5428938.html
MAC地址                                                                                                                                

      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字节

原文地址:https://www.cnblogs.com/wy9264/p/10472742.html