Skip to content

Computer Network

Leon edited this page Oct 7, 2021 · 10 revisions

This page includes two parts of content. The first part holds my learning notes for the book TCP/IP Illustrated. The second half mainly focuses on common interview topics and questions related to network. It will be organized in a top-down approach as in some textbooks.

此篇主要分为两部分,第一部分是学习《TCP/IP 详解》的读书笔记。后半部分围绕常见的面试类计网问题(八股文)展开,但依然沿用部分课本中自顶向下的方式组织内容(即从整体架构到应用层直至物理层的方式)。

Menu

TCP/IP Illustrated(《TCP/IP 详解》)

Interview Questions

  1. Network Architecture(OSI)/Layers

  2. TCP

  1. HTTP&HTTPS
  1. DNS

  2. ARP

TCP/IP Illustrated

1. Introduction

Effective communication depends on the use of a common language.

2. The Internet Address Architecture

3. Link Layer

4. ARP: Address Resolution Protocol

5. The Internet Protocol(IP)

6. System Configuration: DHCP and Autoconfiguration

7. Firewalls and Network Address Translation(NAT)

8. ICMPv4 and ICMPv6: Internet Control Message Protocol

9. Broadcasting and Local Multicasting(IGMP and MLD)

10. User Datagram Protocol(UDP) and IP Fragmentation

11. Name Resolution and the Domain Name System(DNS)

12. TCP: The Transmission Control Protocol(Preliminaries)

13. TCP Connection Management

14. TCP Timeout and Retransmission

15. TCP Data Flow and Window Management

16. TCP Congestion Control

17. TCP Keepalive

18. Security: EAP, IPsec, TLS, DNSSEC, and DKIM

Interview Questions

Network Architecture(OSI)/Layers

TCP

HTTP&HTTPS

HTTP Cache

HTTP Cookies

HTTP Messages

HTTP Sessions

HTTP Headers

HTTP & REST

REST, Representational State Transfer, in this style, the implementation of the client and the server are done independently without each knowing about the other. This means that the code on the client/server side can be changed at any time without affecting the other side.

REST-compliant systems, often called RESTful systems. It is said that RESTful systems are stateless. In the Client-Server architecture, stateless means the server does not need to know anything about what state the client is in and vice versa. HTTP fits well with the REST style: the client and the server communicate through sending "messages" to one another. Statelessness of REST means the server and the client must understand any message received, without seeing previous messages.

To be clear, REST is the way HTTP should be used. Today we only use a tiny bit of the HTTP protocol's methods – namely GET and POST. The REST way to do it is to use all of the protocol's methods. For example, REST dictates the usage of DELETE to erase a document (be it a file, state, etc.) behind a URI, whereas, with HTTP, you would misuse a GET or POST query like ...product/?delete_id=22.

HTTP & CRUD

CRUD refers to the four basic operations of storage management(direct manipulation of the contents of storage locations by users): create, read, update, and delete. CRUD operations are idempotent, meaning that multiple applications of the same operation have the same effect on a storage as a single application.

Data can be put in a location of a storage. The fundamental feature of a storage location is that it has a readable and updatable content (state). These read and update operations are the two basic operations on a storage and are known as the load–update pair (LUP).

Before a storage location can be read or updated, it needs to be available. A storage location can be made either available or unavailable for usage. These create and delete operations are the two other basic operations on a storage.

Almost all internet consumer-related software uses CRUD; you use it every time you ask an application to take your new data or modify the existing one.

The basic HTTP verbs corresponding to CRUD operations are:

  • GET -- retrieve a specific resource (by id) or a collection of resources
  • POST -- create a new resource
  • PUT -- update a specific resource (by id)
  • DELETE -- remove a specific resource by id

DNS

ARP

Clone this wiki locally