网络编程

Posted haiyang11

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了网络编程相关的知识,希望对你有一定的参考价值。

网络五层:

  • osi五层:
    • 应用层 python(应用层包括会话层,表示层)
    • 传输层 tcp udp 四层路由器 四层交换机
    • 网络层 路由器 三层交换机 ipv4 ipv6 (国际协议)
    • 数据链路层 mac arp 网卡 二层傻瓜交换机
    • 物理层 网线接口类型,介质传输速率

?

  • 握手状态:
    • seq 序号 用来表示tcp源端像目标端发送字节流,发送方发送数据对此进行标记 32位
    • ACK 确认请求 只有ACK标志位等于1事,确认序号才有效,ack = seq + 1
    • SYN 发送请求
    • FIN 释放一个连接
    • 注意:确认方=发起方req + 1 ,两端配对

?

TCP协议:

  • 三次握手:

    • 第一次握手:

      • 客户端向服务端发送syn=1的请求和一个随机seq等于x的报文,进入发送状态
    • 第二次握手:

      • 服务端收到客户端发送的syn报文,给客户端回应一个ack=x+1的确认请求和同样还会返回syn=1的请求一个随机seq等于y的报文 ,进入接收状态
    • 第三次握手:

      • 客户端收到服务器syn报文和确认请求,在回应服务器一个ack = y+1报文,客户端和服务端进入建立连接状态,完成三次握手
    • 三次握手意义:

      • 客户端向服务端发送一个连接请求,这个请求因为网络节点问题滞留了,请求在到达服务器已经是一个失效的连接,如果没有三次握手,服务器确认请求,建立连接,但是请求是失效的,客户端不会理会服务器的确认信息,也不会发送消息,服务端一直等待客户端发送数据,这样很多资源就浪费了,这就是三次握手的作用

        ?

  • 四次挥手:

    • 第一次挥手:
  • 客户端向服务器发送FIN=1,seq序号=x (u是上面传送过来的数据最后一个一个字节+1)客户端停止发送数据,进入终止等待状态1

  • 第二次挥手:

    • 服务端收到FIN,回发一个确认请求 ack=x+1和seq=y,

      此时进入关闭等待状态

  • 第三次挥手:

    • 客户端进入终止等待状态2

      服务端向客户端发送FIN=1 ,ack = x+1 假定此时的序号为seq=w

      服务端进入最后确认状态,等待客户端确认

  • 第三次挥手:

    • 客户端发送ack=w+1,seq= x+1

      客户端进入时间等待状态。

以上是关于网络编程的主要内容,如果未能解决你的问题,请参考以下文章

Linux高级网络编程系列教程

Linux高级网络编程系列教程

面向对象编程面向组件编程面向方面编程面向服务编程

编程范式:命令式编程(Imperative)声明式编程(Declarative)和函数式编程(Functional)

少儿编程教育未来前景如何?我想加入少儿编程这行。

TCP/IP网络编程——理解网络编程和套接字编程