网络编程
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
客户端进入时间等待状态。
以上是关于网络编程的主要内容,如果未能解决你的问题,请参考以下文章