TCP/IP 프로토콜 계층
TCP/IP vs OSI

TCP/IP 프로토콜 계층은 위와 같으며, 보통 링크 계층(Link layer), 네트워크 계층(Network layer), 전송 계층(Transport layer), 응용 계층(Application Layer)으로 나뉜다. 우리가 쓰는 기본적인 것들은 대부분 응용 계층에서 일어나며, 맘대로 바꾸는 것도 비교적 쉽다. 하지만 전송 계층부터는 운영체제가 담당하는 부분이라 변경하는 것이 비교적 어렵다. 이전에 배운 TCP와 UDP가 전송 계층에 해당한다.

보통 OSI 7 계층이라 부르며, TCP/IP 프로토콜 계층보다 좀 더 세분화되어 있다.
TCP/IP 계층 별 주요 식별자
네트워크 계층의 식별자가 우리가 흔히 볼 수 있는 IP Address이다. 일반적으로 공유기가 IP 주소를 할당해주며 컴퓨터에서 IP 주소를 확인하려면 ipconfig 명령어를 사용하면 된다. 또는 전송 계층(TCP)의 상태 정보를 확인하는 netstat -tn 명령어로도 현재 사용하고 있는 IP 주소를 확인할 수 있다.
ipconfig /all # Windows 운영 체제
ifconfig # Unix 및 Linux 기반 운영 체제
netstat -tn | more
netstat 명령어의 '-tn' 옵션에서 't'는 TCP 연결과 관련된 정보만 표시되도록 해주며, 'n'은 숫자 형식으로 주소 및 포트 번호를 표시하도록 한다. 'n' 옵션을 주지 않는다면, 외부 주소가 '162.125.35.134:443'인 경우 '162.125.35.134:https'로 표시된다. 즉, 443(암호화된 웹 서버)은 https로, 80은 http로 표시된다.

라우터 (Router)
- 송신자(Sender): 데이터를 생성하거나 보내는 역할
- 라우터(Router): 네트워크에서 데이터를 전파하고 전송하는 역할
- 수신자(Receiver): 송신자가 보낸 데이터 수신 및 처리(데이터를 받아서 읽거나 다른 작업 수행)
일반적인 데이터 전송 과정은 다음과 같다. 송신자가 데이터를 보내면 데이터 패킷은 라우터에 도달하고, 라우터는 받은 패킷의 목적지 주소를 확인하여 최적의 경로를 결정한 후 목적지로 데이터를 전달한다. 마지막으로 수신자는 해당 데이터 패킷을 받아서 처리하게 된다. 하지만 중간에 라우터가 없이 데이터를 주고 받는 경우에는 데이터를 전송하는 계층과 데이터를 수신하는 계층이 동일해야 한다. 즉, 송신자의 전송 계층에서 데이터를 전송한다면, 동일하게 수신자의 전송 계층으로 전송해야 한다.
- process-to-process (Application layer -> Application layer)
- host-to-host (Transport layer -> Transport layer)
그렇다면 데이터 패킷의 경로를 직접 확인해보자! -> traceroute

'www.google.co.kr'에 대해 데이터 패킷이 어떤 경로로 통과하는지 확인한 결과이다. 총 10개의 라우터를 거쳤으며, 각 라우터의 IP 주소 및 응답 시간을 볼 수 있다. 중간에 보이는 '* * *' 부분은 패킷이 차단된 경우이다. 보통 traceroute 결과에서 '* * *'로 표시되는 것은 패킷이 드롭되었거나, 방화벽 또는 보안 설정으로 인해 라우터를 통과하지 못한 경우, 응답 시간이 초과된 경우에 해당된다. 통신 회사 등 라우터 또는 네트워크 장치의 보안 설정에 의해 데이터 패킷이 차단되어 라우터를 통과하지 못할 수 있다.
🤨 데이터 패킷 경로를 확인하는 원리는 무엇일까?
traceroute 또는 tracert와 같은 경로 확인 도구의 원리는 의도적으로 오류를 만드는 것이다.
일반적으로 경로를 확인할 때 ICMP(Internet Control Message Protocol) 또는 UDP 등을 이용한다. ICMP를 이요하는 경우,
출발지에서 목적지로 패킷을 전송하면서 각 라우터에 의해 처리되는 패킷의 수를 의도적으로 제어하고, 오류를 발생시키면 라우터는 패킷을 폐기하고 ICMP 시간 초과 메시지를 생성하여 전송한다. 이 때 라우터에서 생성되는 ICMP 시간 초과 메시지는 라우터의 IP 주소와 응답 시간을 제공하기 때문에 traceroute 사용자는 IP 주소와 응답 시간을 확인할 수 있게 된다.
즉, 패킷 전송 시에 강제로 오류가 발생시키고, 이를 통해 그때의 IP 주소를 가져오도록 하여 경로를 확인하는 것!
인터넷 응용 프로토콜
인터넷 응용은 각자 프로토콜이 필요하다. 최근에는 HTTP로 웹 메일, 웹 ssh, 웹 파일전송, 웹 화상회의 등 다양한 응용을 구현하고 있다.
- Web: HTTP
- File transfer: FTP
- E-mail: SMTP, POP3
클라이언트 - 서버 구조
클라이언트
- 서버와 통신
- 간헐적 통신 (필요에 따라 서버와 통신함)
- 동적 IP 주소 (네트워크에 연결될 때마다 자동으로 할당되며, 네트워크를 떠날 때 반환됨)
- 클라이언트끼리 직접 통신은 하지 않음 (주로 서버를 통해 통신)
서버
- 항상 동작상태 (클라이언트의 요청 대기)
- 고정 IP 주소 (도메인 이름) -> 클라이언트가 서버를 식별하고 접근하기 위함
- 서버 클러스터 (여러 서버가 함께 작동 -> 요청을 분산하여 효율적으로 처리)
P2P(Peer-to-Peer) 구조
- 서버가 없음
- 임의의 단말시스템과 직접 통신
- 피어(peer)들끼리 간헐적으로 연결되어 IP 주소 교환
중앙 서버 없이 피어들끼리 데이터를 공유하거나 요청할 수 있다. 즉 P2P는 분산된 구조! 피어들이 전산에서 나누어서 파일을 전송하기 때문에 직접적으로 성능이 향상될 수 있다. 하지만 연결 자체가 불안정하고 파일 찾기가 어려운 것 등의 단점이 있긴 하다.
'23-2 > 컴퓨터 네트워크' 카테고리의 다른 글
| [컴퓨터 네트워크] Internet 성능 (0) | 2023.10.22 |
|---|---|
| [컴퓨터 네트워크] IP Address (0) | 2023.10.21 |
| [컴퓨터 네트워크] HTTP 데이터 관리 (0) | 2023.10.19 |
| [컴퓨터 네트워크] HTTP 요청과 응답 (0) | 2023.10.19 |
| [컴퓨터 네트워크] HTTP (1) | 2023.10.19 |
댓글