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 |