본문 바로가기

Programming General

[Udacity] Networking for Web Developers

https://classroom.udacity.com/courses/ud256

Key Concepts Layer
HTTP / SSH Application
TCP / UDP Transport
IP Internet
Ethernet / Wifi Hardware

nc(=netcat) 이라는 툴로 통신을 할 수 있다. netcat은 Application Layer가 아닌 Transport Layer에서 통신한다.

 

포트

포트에 "Listen" 하면 해당 포트로 들어오는 통신을 받을 수 있다.

미리 정해지고 널리 쓰이는 포트들이 있다. ex) 80 - HTTP, 22 - SSH 

- netcat -l <port>

// shell 1
$ netcat -l 1234  // listen on port 1234

// shell 2
$ netcat localhost 1234
$ hello world

// shell1
$ netcat -l 1234  // listen on port 1234
$ hello world // shell2에서 입력한 데이터가 그대로 출력된다.

netcat으로도 HTTP 통신을 할 수 있다. 

$ printf 'HEAD / HTTP/1.1\r\nHost: www.google.com\r\n\r\n' | nc www.google.com 80
HTTP/1.1 200 OK
Content-Type: text/html; charset=ISO-8859-1
...

이런 경우에는 하나의 커넥션만 처리를 할 수 있다.

하지만 대부분의 경우에는 동시다발적으로 들어오는 각기 다른 여러개의 요청을 처리해야한다. 어떻게 할까? 크게 세가지 방법이 있다.

1. Process를 포크해서 프로세스별로 하나의 요청(커넥션)을 처리하게 한다.

2. 정해진 수의 Thread/Process Pool을 생성하여 각 개체가 하나의 요청을 처리하게 한다.

3. 하나의 프로세스가 빠르게 Switching 하면서 요청을 처리한다.

'Programming General' 카테고리의 다른 글

서버별 ssh 접속 포트 지정해두기  (0) 2020.08.11
Concurrency vs Parallelism  (0) 2020.01.12