Computer networking a top down approach 7th edition pdf github năm 2024

  • * Actions
    Automate any workflow  
    
    • Packages
      Host and manage packages  
    • Security Find and fix vulnerabilities
    • Codespaces Instant dev environments
    • Copilot Write better code with AI
    • Code review Manage code changes
    • Issues Plan and track work
    • Discussions Collaborate outside of code Explore
    • All features
    • Documentation
    • GitHub Skills
    • Blog
  • For
    • Enterprise
    • Teams
    • Startups
    • Education By Solution
    • CI/CD & Automation
    • DevOps
    • DevSecOps Resources
    • Learning Pathways
    • White papers, Ebooks, Webinars
    • Customer Stories
    • Partners
  • * GitHub Sponsors
    Fund open source developers  
    
    • The ReadME Project
      GitHub community articles  
      
      Repositories
    • Topics
    • Trending
    • Collections
  • Pricing

Provide feedback

We read every piece of feedback, and take your input very seriously.

Include my email address so I can be contacted

Saved searches

Use saved searches to filter your results more quickly

Name

Query

To see all available qualifiers, see our documentation.

Sign in

Sign up

This repository contains all the learning materials for the classical book on computer networking —— Computer Networking: A Top Down Approach.

The authors provided the recorded videos for this book, you can go to the official website to get the links to each chapter (if you cannot watch youtube, you can find the same videos on bilibili).

supplementary materials


Notes : ppts for each video

Wireshark Labs : use wireshark software to see the real Internet packets, which will deepen your understanding for many Internet protocols.

Here 12345 is our client port number for more details of the parameter can check the code in main method

def main(argv):

print('RUSHB_CLIENT_VERSION: ' + RUSHB_TESTCLIENT_VERSION)
if len(argv) <= 2 or not argv[1].isdigit() or not argv[2].isdigit():
    print("Usage: python3 RUSHBSimpleClient.py client_port server_port [-v] [-m mode] [-o output]")
    return
my_port = int(argv[1])
serv_port = int(argv[2])
debug_level = 2
mode = SIMPLE_MODE
output = sys.stdout
for i, arg in enumerate(argv[3:]):
    if arg == "-v" and argv[i + 4] in ("0", "1", "2", "3", "9", "10"):
        debug_level = int(argv[i + 4])
    elif arg == "-m":
        mode = {"SIMPLE": SIMPLE_MODE, "NAK": NAK_MODE, "MULTI_NAK": MULTI_NAK_MODE, "TIMEOUT": TIMEOUT_MODE,
                "MULTI_TIMEOUT": MULTI_TIMEOUT_MODE, "INVALID_SEQ": INVALID_SEQ_MODE,
                "INVALID_ACK": INVALID_ACK_MODE, "INVALID_FLAGS": INVALID_FLAGS_MODE,
                "ENCODED": ENCODED_MODE, "CHECKSUM": CHECKSUM_MODE, "ENCODED_CHECKSUM": ENCODED_CHECKSUM_MODE,
                "INVALID_ENCODE_VAL": INVALID_ENCODE_VAL_MODE, "INVALID_CHECKSUM_VAL": INVALID_CHECKSUM_VAL_MODE,
                "INVALID_ENCODE_FLAG": INVALID_ENCODE_FLAG_MODE, "INVALID_CHECKSUM_FLAG": INVALID_CHECKSUM_FLAG_MODE
                }.get(argv[i+4].upper(), SIMPLE_MODE)
    elif arg == "-o":
        output = open(argv[i+4], "w")
conn = Connection(LOCALHOST, my_port, LOCALHOST, serv_port, output, debug_level)

This assignment introduces the use of Network Layer and Link Layer (from OSI Models) as well as socket programming (simulation) on each of these devices: adapters, switches and routers. After finishing the assignment, I understanded how data is sent throughout the internet.

Computer networking a top down approach 7th edition pdf github năm 2024

RUSHBAdapter is supposed to work as an adapter for one process only through TCP (e.g. RUSHBSvr). The process that connects to RUSHBAdapter needs to open a socket under localhost (127.0.0.1) as a listener under an available port (assigned by the kernel). However, in this assignment, the RUSHBAdapter is not required to listen to any processes, instead, it will listen to stdin (see the figure below). RUSHBSwitch works like a network router, and it can be local or global. A local RUSHBSwitch can listen to many RUSHBAdapter through a UDP and connect to many global RUSHBSwitches through TCP. In the meantime, the global RUSHBSwitch cannot listen to any RUSHBAdapter, but can connect to other RUSHBSwitches. This is a diagram explaining how RUSHBAdapters and RUSHBSwitches are connected:

Computer networking a top down approach 7th edition pdf github năm 2024

The final goal for this programming assignment is sending and receiving data across the global network without losses and errors. Data can be anything that can attached to the adapter, such as netcat, or RUSHBSvr, or even stdin (as in this assignment).

how to run:

python RUSHBSwitch.py {local|global} {ip} [optional_ip] {x} {y}

RUSHBSwitch will generate a port number, say it will be 61606, then we open another terminal to run:

python RUSHBAdapter.py 61606

Examply running through RUSHB.py is below, in this example, we test the functionality of RUSHBSwitch with given RUSHBAdapter simulator.