????Tcpcopy????????????????????Щ??????????????????????Tcpcopy????????????????????????????????????????????????????????????????????????????
????Tcpcopy???????????????????:????????intercept????????????????????????????????intercept???????????????offload?????????????????????????????????????????????????????
??????????

????Tcpcopy
???????????£???????????????????????????????raw socket input ????raw socket(???????)?????????????????????????????????????????????????????????????3????????????socket ????????????tcpcopy?????????Raw_socket????????????÷??????ο? http://blog.sina.com.cn/s/blog_9599e95101010w2g.html
?????????????int sock = socket(AF_INET??SOCK_RAW??IPPROTO_TCP)?? ????????????Э???? AF_INET ????TCP/IPЭ?顣????????????SOCKET?????????????????Э????????????????????Э???????tcp(?????????????Э??????)??????????IP???????????????????????IP???????(IP??????????Щ??????????????????)??Tcpcopy????Raw Socket????????????????????????????????????????????????????????????IP?????????н???????????????raw socket??????У????????????????????????socket?????????Tcpcopy???????????????????????????
???????????????ú???sock = socket(AF_INET?? SOCK_RAW??IPPROTO_RAW)??????????setsockopt(sock?? IPPROTO_IP?? IP_HDRINCL?? &n?? sizeof(n))??????IP??????????????????????д(??????????????????£?IPЭ?????????IP??????????)??Tcpcopy????????????????????IP?????????????IP????????£?tcp_header->dest = remote_port;
????ip_header->daddr = remote_ip;?????sendto?????????????????????
????send_len = sendto(sock??(char *)ip_header??tot_len??0??(struct sockaddr *)&toaddr??sizeof(toaddr));
????Intercept
???????????Intercept??????????????????????????????д???????????????????????ó????????????????????????????????????????Tcpcopy??????????????Iptable?????????????????????????
????modprobe ip_queue
????iptables -I OUTPUT -p tcp –sport 2080 -j QUEUE
????????iptable???????OUTPUT????2080???????????IP???????????QUEUE????QUEUE????ip_queue??????(http://bbs.chinaunix.net/thread-1941806-1-1.shtml).????????iptable????????????????modprobbe???????ip_queue??顣???????????????裬 ???????iptable??????????????IP Queue????????????
????Tcpcopy?????????Intercept?????????·??????Netlink socket??
????int sock = socket(AF_NETLINK??SOCK_RAW??NETLINK_FIREWALL);
????Netlink???????http://linux.chinaunix.net/techdoc/beginner/2008/11/12/1044982.shtml??
????NETLINK_FIREWALLЭ????????????????IPQM_MODE??IPQM_PACKET??IPQM_VERDICT.??????????IPQM_PACKET???????????????????????Inercept??Intercept???????????IPQM_VERDICT??????????????????t??????DROP??ACCEPT????Tcpcopy?????????????????????÷?????????????????Intercept???????Ip header?? Tcpcopy?????????????????????????ip?б????????????·??????????????÷????????????????IP??drop????????2080??????????????÷?????????????????????????????iptables?????????????????????????????????????????????÷?????