- 1、本文档共33页,可阅读全部内容。
- 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
- 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载。
- 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
CS 498 Lecture 14The Internet Protocol V4
CS 498 Lecture 14 The Internet Protocol V4 Jennifer Hou Department of Computer Science University of Illinois at Urbana-Champaign Reading:Chapter 14, The Linux Networking Architecture: Design and Implementation of Network Protocols in the Linux Kernel First Possible Path of an IP Packet Packets arrive on an interface and are stored in the input queue of the respective CPU. Once the layer-3 protocol in the LLC has been determined (e.g., ETH_PROTO_IP), the packet is passed to the ip_rcv() function. Recall the Packet Path in LLC Internet Protocol Implementation in Linux 2nd/3rd Possible Path of an IP Packet TCP/UDP packets are packed into an IP packet and passed down to IP via ip_queue_xmit(). The IP layer generates IP packets itself, e.g., multicast packets or fragmentaion of a large packet, or ICMP/IGMP packets. Path of Incoming IP Packets ip_rcv(skb,dev,pkt_type) Packets that are not addressed to the host (packets received in the promiscuous mode) are rejected. A sanity check is performed Does the packet have at least the size of an IP header? Is this IP Version 4? Is the checksum correct? Does the packet have a wrong length? If the actual packet size skb?len, then invoke skb_trim(skb,iph?total_len) The netfilter hook NF_IP_PRE_ROUTING is invoked Packet Filtering Architecture in Linux ip_rcv_finish(skb) ip_route_input() is invoked to determine the route of a packet. skb?dst is set to an entry in the routing cache which stores both the destination IP and the pointer to an entry in the hard header cache (cache for the layer 2 frame packet header) If the IP packet header includes options, an ip_option structure is created. skb?dst?input() points to the function that should be used to handle the packet (delivered locally or forwarded further) ip_local_deliver(), ip_forward(), ip_mr_input() IP Forwarding To activate IP packet forwarding, do echo ‘1’ /proc/sys/net/ipv4/ip_forward ip_forward(skb) Step 1: Packet not marked with pkt_type == PACKET_HOST are deleted.
文档评论(0)