Computer Networking: A Top-Down Approach, 8th Edition의 내용을 기반으로 작성한 글입니다.
OSI(Open System Interconnection) 네트워크 모델 - OSI 7계층이란?
ISO(International Organization for Standardization)는 1980년대 초, 여러 업체가 만든 시스템에 대해 상호연동이 가능한 표준 네트워크 모델을 제정할 필요성을 인식하고 1984년에 OSI 네트워크 모델을 발표했다.
7계층 - 응용 계층(Application Layer)이란?
여러 가지 프로토콜에 대한 사용자 인터페이스를 제공한다. 사용자나 응용 프로그램 사이에 데이터 교환을 가능하게 하는 계층이다. HTTP, FTP, 메일 프로그램 등을 제공한다.
Application 구조
client-server 구조: 서버와 클라이언트가 통신하는 구조
server는?
- always-on host, permanent IP address
- 항상 켜져있고, 고정IP를 사용한다.
client는?
- 서버와 통신한다.
- 동적IP를 사용하며 간헐적으로 연결된다.
- 클라이언트끼리 통신할 때 직접 연결하지 않고 서버를 거쳐서 통신한다.
peer-to-peer(P2P) 구조
- 단대단 통신으로 client-server 구조와 달리 중앙 서버가 없다. (서버가 다운되어도 통신이 가능하다.)
- end system끼리 직접 연결하기 때문에 서버가 항상 켜져있을 필요가 없다.
- self scalability(자기 확장성): 새로운 peers는 새로운 서비스 용량과 새로운 서비스 요구사항을 제공한다.
P2P 구조의 단점
- Peers(=clients)끼리 연결할 때마다 IP주소가 바뀌기 때문에 이것을 관리하는 것이 복잡하다.
프로세스
프로세스는 호스트에서 동작하는 프로그램으로, app-L를 작동시킨다. 즉, 실제 통신하는 것은 프로그램이 아니라 프로세스가 하는 것이다.
- 같은 호스트 내에서 통신할 때는 inter-process communication을 사용하고,
- 서로 다른 호스트끼리 메시지를 교환할 때는 프로세스로 통신한다.
두 프로세스 간의 통신에서
- 클라이언트: 접속, 통신을 초기화하는 프로세스이다.
- 서버: 접속을 기다리는 프로세스이다.
즉 요청을 보내는 쪽이 클라이언트, 요청을 받는 쪽이 서버인 것이다.
소켓
프로세스가 메시지를 보내고 받을 때 소켓을 사용한다. 프로세스가 집이라면 소켓은 그 집의 문이라고 비유할 수 있다.
Addressing Proccesses
호스트가 메시지를 주고 받기 위해서는 각 프로세스마다 IP주소와 포트 넘버를 할당받아야 한다. 이것들은 수신 프로세스를 식별하기 위한 정보이다. IP주소는 기기를 식별하고 포트 넘버는 특정 기기 안에 존재하는 여러 프로세스를 구별하기 위해 사용된다. 예를 들어, IP주소-포트 넘버의 관계는 아파트 동-호수로 비유할 수 있다.
대표적인 포트 넘버로 HTTP 서버는 80, 메일 서버는 25를 고유번호로 사용한다.
App-L 프로토콜이 정의하는 것
App-L의 프로토콜은 서로 다른 end-system에서 실행되는 application의 프로세스가 서로 메시지를 보내는 방법을 아래와 같이 정의한다.
- 메시지 타입: request인지 reponse인지
- 메시지 syntax: 각 메시지 필드가 무엇을 의미하는지
- 메시지 semantics: 필드의 정보가 무엇을 의미하는
- 언제, 어떻게 메시지를 송수신할지 규칙
app은 Trans-L에게 무엇을 요구하는가?
- Realiable 데이터
Reliable 데이터는 신뢰성 있는 데이터 = 손실되지 않는 데이터를 의미한다.
오디오를 생각해보자. 소리가 나오다가 중간중간 끊겨서 들려도(손실 발생) 어느 정도 오디오의 내용을 이해할 수 있다. 이런 경우는 데이터를 잃어버려도 되는 app이다.
하지만 중요한 파일이나 메일을 전송하는 경우, 전송하다가 중간에 데이터가 유실되거나 데이터의 일부가 손실된다면 타격이 매우 클 것이다. 이런 경우가 100% 신뢰성 있는 데이터가 요구되는 경우이다.
- Timing
딜레이의 반대 표현이라고 생각하면 된다.
전화 통화를 하거나 interactive 게임을 하는 경우, 딜레이가 적어야 한다.
- Troughput (처리량)
전송량이라고 생각하면 된다. 실시간 서비스처럼 최소한의 전송량이 보장되어야 하는 app(bandwidth-sensitive applications)이 있는 반면, 최소 전송량 보장이 필요없는 app들(elastic apps)도 있다.
- Security
- Encryption 암호화
- Integrity 무결성: 데이터가 변하지 않았는지
- Availability 가용성: 암호화 시간이 너무 오래 걸리진 않는지
인터넷 전송 프로토콜
app-L에서는 TCP와 UDP 중 무엇을 쓸지 결정해야 한다. 이 프로토콜들은 trans-L 글에서 더 자세히 다룰 테니 여기에서는 각 프로토콜의 대표적인 특징만 간략히 알아보자.
TCP service
- 송수신 프로세스 간 reliable 데이터를 전송한다.
- flow control(흐름 제어): 송수신 측의 속도 차이로 인한 데이터 유실을 방지하기 위함
- congestion control(혼잡 제어): 네트워크가 overload 될 때 전송량을 조절한다.
- 지원하지 않는 것: Timing, minimum throughput 보장, security
- connection-oriented(연결지향형): app-L 메시지 전송 전에 client-server 프로세스 간 setup 과정이 필요하다.
UDP service
- 송수신 프로세스 간 unreliable 데이터를 전송한다.
- 지원하지 않는 것: reliability, flow control, congestion control, timing, throughput 보장, security, connection setup
- TCP보다 속도가 빠르다: 이는 congestion control을 지원하지 않아서 속도 저하가 발생하지 않기 때문이다. 하지만 congestion으로 인해 end-system 간 처리율이 낮아져서 속도가 저하될 가능성도 존재한다.
Securing TCP
TCP와 UDP에는 암호화 기술이 없다. 때문에 SSL이라는 것을 만들었다. 최근 들어서는 SSL에서 TLS로 기술을 교체하고 있다.
SSL(Secure Socket Layer) -- > TLS(Transport Layer Security)
- TCP connection에 암호화를 제공한다.
- data integrity: 데이터의 훼손 여부를 따진다.
- end point 인증: 누가 보낸 것인지 확인한다.
DTLS(Datagram Transport Layer Security)라는 것도 있다. 이것은 UDP에서 사용되는 보안 프로토콜이다.
'CS > Network' 카테고리의 다른 글
02_Socket_IO (2) | 2024.07.23 |
---|---|
TCP flow control이란? (0) | 2024.03.18 |
다중화와 역다중화 (0) | 2024.02.01 |
OSI 7계층 모델과 TCP/IP 4계층 모델 비교 (0) | 2024.01.31 |
HTTP란 무엇인가? (1) | 2024.01.30 |