初识网络

网络编程  




1:C\S构架:
什么是SC构架?
C :客户端(client),S:服务端(server),基于网络与服务端与客户端的交互来实现的程序


服务器具备的三个特性:
服务器的稳定性与性能都强与客户端,并且服务器的IP地址与端口都不会发生变动,


2.网络协议:就是网络传输的一种标准,无论是什么网络传输协议,其必定包含两个部分,报头,数据,
报头:报头包含了目标IP,源IP,以及对后包含的数据进行的简单的描述其肯定是16个字节,
数据:数据即传送的信息数据








3:网络分层:osi五层协议
2.1 osi五层协议就是将互联网分层具体的将网络分为五大层:
物理层:传输的数据就是二进制数字,即高电频代表1,低电频代表0,


数据链层:使用最原始的ethement,万维网协议,使用的是mac地址进行局域网广播(每一个网卡在出厂的时候都会有一个独一无二的mac值,该值是48位二进制,通常采用分8位十六进制数的形式来表示),广播的原理就是将数据拷贝成几份发给局域网内所有计算机(取决于当前局域网内的所有计算机),每一台计算机都会识别数据包中的报头,来查看是否是自己的数据包,然后接受数据包,实际上交换机每一次发送数据包都不是发一次进行一次广播,而是先采用ORP运算,将每一次计算机发送的记录存储到一个mac地址值的表中每一次都会先从表中查找mac地址值,然后直接给地址值发送出数据包,并不会在进行广播


网络层:使用的是IPv4 IPv6协议,使用的是IP地址来表示每个局域网的位置,在查找局域网的时候会使用子网掩码和地址来进行或与运算,来判断两个地址值是否在同一个网段内,(补充:计算机在连接网络的时候会从网卡默认的配置中链接DHCP来获取本机的子网掩码和IP地址DHCP端口号为73位)






传输层:使用的是tcp,udp协议,基于IP地址来进行通讯的(传输控制协议),两者的区别就是tcp使用起来更加安全,tcp在传输数据的完毕的时候并不会将计算机缓存当中的数据,而是等待目标的相应确认数据发送成功,而udp协议是进行一次握手后就直接传输,不会等待目标的相应确认,就立即将计算机缓存中的数据清理,相比tcp而言,udp效率较高,但是数据的安全性较差,



应用层使用的是http超文本传输协议,该协议由 http:// 传输模式,  域名+端口   服务器的资源组成,其中一个域名对应着一个端口,在进行HTTP访问时 会自动的进行域名解析,即DNS解析,DNS解析就是网卡在出厂的时候就会配置一个DNS服务器,该服务器负责存放域名与IP地址的关系,在每次进行访问的时候,会自动的访问DNS服务对其域名进行解析,得到具体的地址值,在地址值的基础上进行数据访问








4,tcp的三次握手,tcp特征在与在计算机之间是建立传输管道来进行数据之间的交互,进行数据交互之前会建立管道,建立管道的过程就是分为三部,




1,向目标发起请求建立传输管道,
2,目标建立管道之后会将同意的请求与请求建立接受数据的管道,
3,同意目标的建立请求






tcp的四次挥手


1,服务端数据传输完毕向目标发起请求解除传输管道,
2,客户端等待数据传输完毕,客户端确认解除传输管道,等待数据的发送完毕,
3,数据发送完毕,向服务端发出解除接收管道的请求,
4,等待数据接收完毕,确认管道关闭,管道关闭






syn_sent  建立成功,等待数据的发送
sys_rcvd  建立成功,等待数据的接收
ectableished  双方链接建立成功
SYN 请求连接 ASK 确认请求 Seq 序列号 Fin 请求断开链接 
Fin_close_1 主动断开链接 Fin_close_2 被动断开连接 time_wait 等待对方数据传输完成 wait_close 等待数据接受完成关闭链接 LAST_ASK 最后一次确认挥手








半连接池:
什么是半连接池 半连接池就是存放未及时处理的链接请求的地方,属与请求的缓存区,假如一个缓存区为5,最大存储5个请求
那么假设半连接池溢出,服务器短时间就不能再处理任何的请求,客户端会显示请求超时






      客户端                                                 服务端    起始状态(listen)
            无     ---syn seq = x------->             sys_rced

   syn.sent       <---ask syn seq = x + 1-      sys_rced

ectableished   -----ask seq = x + 2->   ectableished









        服务端                                                               客户端
        FIN_close_1       >>>>>Fin seq = x>>>>>>     wait_close

        主动断开链接                                      接收到请求等待数据传输完毕


              <<<<<ASK seq = x+1 <<<       数据接受完毕断开链接回应请求
        Fin_close_2                                 
          
          <<<<<Fin seq = y<<<<<<                       LAST_ASK

        time_wait                                                     最后一次挥手,客户端数据传输完毕 

        等待数据接收完毕 确认请求关闭最后一条数据链                      

       

                        >>>>>ASK seq = y+1>>>>     数据链关闭 

阅读更多
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页