网络编程与网络框架

1.网络分层:

    从上到下分别是:应用层、传输层、网络层、数据链路层和物理层。

    1.1:物理层:

            物理层负责比特流在节点间的传输(即负责物理传输),该层的协议既与链路有关,也与传输介质有关,通俗来讲就是把计算机连接起来的物理手段。

    1.2:数据链路层:

            该层控制网络层与物理层之间的通信,其主要功能是如何在不可靠的物理线路上进行数据的可靠传递。为了保证传输,从网络层接收到的数据分割成特定的可被物理层传输的帧。帧是用来移动数据的结构包,它不仅包括原始数据,还包括发送方和接收方的物理地址以及纠错和控制信息。其中的地址确定了帧将发送何处,而纠错和控制信息则确保帧无差错到达。如果在传送数据时,接受点检测到所有数据中有差错,就要通知发送方重发这一帧。

    1.3: 网络层:

           网络层决定如何将数据从发送方路由到接收方。网络层通过综合考虑发送优先权、网络拥塞程度、服务质量以及可选路由的花费来决定从一个网络中的节点A 到另一个节点B 的最佳路径。

    1.4:传输层:

          该层位两台主机上的应用程序提供端到端的通信。相比之下,网络层的功能是建立主机到主机的通信。传输层有两个传输协议:TCP(传输控制协议)和 UDP(用户数据报协议)。其中,TCP是一个可靠的面向链接的协议,UDP是不可靠的或者说无连接的协议。

    1.5:应用层:

         应用程序收到传输层的数据后,接下来就要进行解读。解读必须事先规定好格式,而应用层就是规定程序的数据格式的。它的主要协议有:HTTP、FTP、Telnet、SMTP、POP3等。

2.TCP的三次握手与四次挥手:


         位码即tcp标志位,有6种标示:
               SYN(synchronous建立联机)
               ACK(acknowledgement 确认)
               PSH(push传送)
               FIN(finish结束)
               RST(reset重置)
               URG(urgent紧急)
               Sequence number(顺序号码)
               Acknowledge number(确认号码)
         客户端TCP状态迁移:
               CLOSED->SYN_SENT->ESTABLISHED->FIN_WAIT_1->FIN_WAIT_2->TIME_WAIT->CLOSED
         服务器TCP状态迁移:
               CLOSED->LISTEN->SYN收到->ESTABLISHED->CLOSE_WAIT->LAST_ACK->CLOSED


         (1)第一次握手:建立连接时,客户端A发送SYN包(SYN=j)到服务器B,并进入SYN_SEND状态,等待服务器B确认。

         (2)第二次握手:服务器B收到SYN包,必须确认客户A的SYN(ACK=j+1),同时自己也发送一个SYN包(SYN=k),即SYN+ACK包,此时服务器B进入SYN_RECV状态。

         (3)第三次握手:客户端A收到服务器B的SYN+ACK包,向服务器B发送确认包ACK(ACK=k+1),此包发送完毕,客户端A和服务器B进入ESTABLISHED状态,完成三次握手。


          断开连接时需要进行四次挥手:

         (1)第一次挥手:客户端设置seq和ACK,向服务端发一个FIN报文段。此时,客户端进入FIN_WAIT_1状态,表示客户端没有数据要发送给服务端;

         (2)第二次挥手:服务端收到了客户端发送的FIN报文段,向客户端回了一个ACK报文段。

         (3)第三次挥手:服务端向客户端发送FIN报文段,请求关闭连接,同时服务端进入LAST_ACK状态。

         (4)第四次挥手:客户端收到服务端发送的FIN报文段,向服务端发送ACK报文段,然后客户端进入TIME_WAIT状态。服务端收到客户端的ACK报文段以后,就关闭连接。此时,客户端等待2MSL(最大报文段生存时间)后依然没有收到回复,则说明服务端已正常关闭,这样客户端也可以关闭连接了。


          如果有大量的连接,每次在连接、关闭时都要经历三次握手、四次挥手,这很显然会造成性能低下。因此,HTTP有一种叫作keepalive connctions的机制,它可以在传输数据后仍然保持连接,当客户端需要再次获取数据时,直接使用刚刚空闲下来的连接而无须再次握手。


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值