TCP通信
OSI七层参考模型与TCP/IP
Linux模拟请求百度
1 | exec 8<> /dev/tcp/www.baidu.com/80 // >与< 分别表示输入输出,此行表示与百度建立tcp连接(三次握手) |
TCP/IP 连接过程
a 表示发送端 b 表示接收端
三次握手
- a的传输层先发送一个syn包通过a的网络层,链路层,物理层,到B的物理层,链路层,网络层,传输层
- b的传输层会发送个syn+ack 包到a的传输层(路径同上)
- a的传输层发送一个ack到b 的传输层(连接建立)
传输过程
1.a的传输层 带有ack+data(数据包)给b的传输层
2.b收到后直接返回个 ack包给a,data 交给应用层处理
3.a确认签收消息 单次通信完成
四次挥手
1.a的传输层 带有fin(数据包)给b的传输层
2.b传输层回給a 一个ack传输包(此时还没断开连接)
3.b确认没有正在传输的数据包了 发送一个fin(数据包)给a的传输层
4.a传输层回給b 一个ack传输包
5.a,b 释放连接资源 连接断开
1 | netstat -natp //可以查看客户端与服务端的连接 state LISTEN 监听端口端口 ESTABLISHED 建立连接的端口映射 (永远是服务端监听端口对应客户端的多个端口) |
网络传输层丶链路层(arp)
1.内网ip 与子网掩码做与运算 得到下一跳主机ip(192.169.1.103 与掩码255.255.255.0 得到 192.169.1.0)192.169.1.0
1 | routing table //访问的ip 与每行的genmask做与运算 如果Destination一致则直接丢给当前行交换机将数据包传输给访问ip 否者调到网关进行下一跳 |
最后更新: 2020年02月03日 17:28
原始链接: http://yoursite.com/2020/0203/tcp-ip-communication.html