Tcp/Ip协议族简单解读及网络数据包/报/帧数据格式及封装及解包;
2015-01-06 10:35
579 查看
http://www.creseek.cn/products-install/install_on_bsd_linux/ 中文检索
离线cloudera ecosystem components;
http://archive-primary.cloudera.com/cdh4/redhat/5/x86_64/cdh/4.6.0/RPMS/x86_64/
ARP数据包
ARP应答包类似,直接飘过;
子网隐码产生于路由表?;
1.TCP段格式
TCP three-way-handshake;
TCP establish connection:
client: syn 100(0)此处的0表示当前数据段不携带有效负荷,因此数据字节为0,(mss maximum segment size 1460)
server: syn 200(0),ack 101=c_syn+1;
client: ack 201=s_syn+1;(syn序号在网络通讯中用作临时地址,每发一个数据字节syn序号要加1,因此在接收端可以根据序号摆出数据包的顺序,检查是否存在丢包);
mss最大段尺寸,如果一个segment太大,经过ip网络层到达底层链路层封装成帧超过了最大帧size,则就会产生分片fragmentation,传输到接受端时需在ip层分片;
在建立连接的同时,双方协商了一些信息,例如双方发送序号的初始值、最大段尺寸等
应用程序交给TCP协议发送的数据会暂存在TCP层的发送缓冲区中,发出数据包给对方之后,只有收到对方应答的ACK段才知道该数据包确实发到了对方,可 以从发送缓冲区中释放掉了,如果因为网络故障丢失了数据包或者丢失了对方发回的ACK段,经过等待超时后TCP协议自动将发送缓冲区中的数据包重发。
TCP data transfer:
client: 101(20)(S response C syn),201(C response S syn);
server: 201(10),ack 121=c_101+20;
client: ack 211;
TCP close connection:
client: fin,121(0),ack 211;
server: ack 122
server: fin,121(0),ack 122;
client: ack 122;
Traffic/flow control
介绍UDP时我们描述了这样的问题:如果发送端发送的速度较快,接收端接收到数据后处理的速度较慢,而接收缓冲区的大小是固定的,就会丢失数据。TCP协议通过'''滑动窗口(Sliding Window)'''机制解决这一问题
Socket Programming;
热身概念:
在TCP/IP协议中,“IP地址+TCP或UDP端口号”唯一标识网络通讯中的一个进程,“IP地址+端口号”就称为socket。
TCP/IP协议最早在BSD UNIX上实现,为TCP/IP协议设计的应用层编程接口称为socket API
在TCP协议中,建立连接的两个进程各自有一个socket来标识,那么这两个socket组成的socket pair就唯一标识一个连接;
Network byte order:
单线程大规模并发网络程序linux 2.5.44>>内核可选IO机制kqueue/epoll/select;
时监听多个阻塞的文件描述符(多网络连接),
哪个有数据到达就处理哪个,这样,不需要fork和多进程就可以实现并发服务的server;
Network Programming;
UDP不需要维护连接,程序逻辑简单
UDP协议是不可靠的,实际上有很多保证通讯可靠性的机制需要在应用层实现
UNIX Domain Socket(IPC internet process connections)与网络socket编程;
RS485单片机;
ZigBee无线通讯协议;
uCOS-II,vXworks嵌入式系统;
tornado-Web 服务器;
离线cloudera ecosystem components;
http://archive-primary.cloudera.com/cdh4/redhat/5/x86_64/cdh/4.6.0/RPMS/x86_64/
ARP数据包
ARP应答包类似,直接飘过;
子网隐码产生于路由表?;
1.TCP段格式
TCP three-way-handshake;
TCP establish connection:
client: syn 100(0)此处的0表示当前数据段不携带有效负荷,因此数据字节为0,(mss maximum segment size 1460)
server: syn 200(0),ack 101=c_syn+1;
client: ack 201=s_syn+1;(syn序号在网络通讯中用作临时地址,每发一个数据字节syn序号要加1,因此在接收端可以根据序号摆出数据包的顺序,检查是否存在丢包);
mss最大段尺寸,如果一个segment太大,经过ip网络层到达底层链路层封装成帧超过了最大帧size,则就会产生分片fragmentation,传输到接受端时需在ip层分片;
在建立连接的同时,双方协商了一些信息,例如双方发送序号的初始值、最大段尺寸等
应用程序交给TCP协议发送的数据会暂存在TCP层的发送缓冲区中,发出数据包给对方之后,只有收到对方应答的ACK段才知道该数据包确实发到了对方,可 以从发送缓冲区中释放掉了,如果因为网络故障丢失了数据包或者丢失了对方发回的ACK段,经过等待超时后TCP协议自动将发送缓冲区中的数据包重发。
TCP data transfer:
client: 101(20)(S response C syn),201(C response S syn);
server: 201(10),ack 121=c_101+20;
client: ack 211;
TCP close connection:
client: fin,121(0),ack 211;
server: ack 122
server: fin,121(0),ack 122;
client: ack 122;
Traffic/flow control
介绍UDP时我们描述了这样的问题:如果发送端发送的速度较快,接收端接收到数据后处理的速度较慢,而接收缓冲区的大小是固定的,就会丢失数据。TCP协议通过'''滑动窗口(Sliding Window)'''机制解决这一问题
Socket Programming;
热身概念:
在TCP/IP协议中,“IP地址+TCP或UDP端口号”唯一标识网络通讯中的一个进程,“IP地址+端口号”就称为socket。
TCP/IP协议最早在BSD UNIX上实现,为TCP/IP协议设计的应用层编程接口称为socket API
在TCP协议中,建立连接的两个进程各自有一个socket来标识,那么这两个socket组成的socket pair就唯一标识一个连接;
Network byte order:
单线程大规模并发网络程序linux 2.5.44>>内核可选IO机制kqueue/epoll/select;
时监听多个阻塞的文件描述符(多网络连接),
哪个有数据到达就处理哪个,这样,不需要fork和多进程就可以实现并发服务的server;
Network Programming;
UDP不需要维护连接,程序逻辑简单
UDP协议是不可靠的,实际上有很多保证通讯可靠性的机制需要在应用层实现
UNIX Domain Socket(IPC internet process connections)与网络socket编程;
RS485单片机;
ZigBee无线通讯协议;
uCOS-II,vXworks嵌入式系统;
tornado-Web 服务器;
相关文章推荐
- Swift网络请求于数据解析简单封装
- 源码推荐(0724B):网络数据安全--base64 和 MD5 的简单封装,视频播放器封装AVPlayer
- 使用基于Android网络通信的OkHttp库实现Get和Post方式简单操作服务器JSON格式数据
- 封装http请求返回统一json格式数据的网络操作
- Android自定义网络数据加载等待框的简单封装
- 最简单的TCP网络封包解包(补充)-序列化
- 网络游戏中,玩家数据同步的一种简单实现
- 基于.NET 的WebSocket 的简单实例 --- 数据格式
- js数据验证集合、js email验证、js url验证、js长度验证、js数字验证等简单封装
- [Linux网络编程]以太网封装格式及相关结构体
- BT.656与BT.601在数据格式上的简单区别
- [转]新闻一篇:Google推出Protocol Buffers:争夺网络时代数据格式
- 网络编程中数据格式的转换
- Android之从网络中获取数据并返回客户端的两种方式:XML格式返回与Json格式返回
- array grid的简单使用.根据官方示例改写(asp.net).json数据格式.
- 关于简单格式大容量数据导出的web实现
- 基于tcp/ip协议的Socket网络通讯 --> 简单的数据传送和库构造
- 一个简单封装存储二维数据表的类
- c++ 数据封装模式之一: 简单工厂模式