TCP/IP 4계층 모델
❒ Description
OSI 참조 모델에 대해 알아보고 각각의 계층의 특징을 알아보자.
또한 데이터가 어떻게 흐르는지에 대해서도 이해하고 넘어가자.
참고로 여기서는 TCP/IP 4계층 모델에 대해서 집중적으로 공부할 것이다.
❒ OSI 7 계층 & TCP/IP 4 계층
1. OSI(Open System Interconnetion) 7 계층
깃블로그에 정리해 둔 내용으로 대체
OSI란 서로 다른 컴퓨터가 네트워크 구조에 상관없이 통신할 수 있도록 하는 국제 표준이다.
2. TCP/IP 4계층
일반적으로 TCP/IP는 TCP와 IP 뿐만 아니라 상위 응용 계층의 프로토콜도 포함된 개념이다.
즉, TCP/IP는 인터넷에 접속하는 프로토콜 중에서 가장 중요한 기능을하는 TCP와 IP 또는
여러 프로토콜의 집합을 말한다.
IP는 패킷으로 변환된 데이트를 네크워크를 통해 멀리 떨어진 호스트에 보내며, TCP는 전송된
패킷에 오류가 발생하면 재전송을 요청하고 재전송된 패킷에 오류가 없으면 원래의 데이터로
재결합한다. 즉 TCP는 데이터의 흐름을 제어하거나 데이터가 정확한지 검사하는 것이고,
IP는 데이터 패킷을 전송하는 것이다.
이처럼 TCP/IP는 인터넷의 두호스트 간 데이터 흐름의 정확성을 보장하는 프로토콜이다.
프로토콜이란?
프로토콜은 서로 다른 시스템에 있는 개체 간에 성공적으로 데이터를 전송하는 통신규약을 말한다.
또한 프로토콜은 계층적 구조로 정의되고 각 계층의 역할을 구분한다.
❒ 애플리케이션 계층
1. 애플리케이션 계층이란?
애플리케이션 계층은 FTP, HTTP, SSH, SMTP, DNS 등 응용 프로그램이 사용되는 프로토콜 계층이며
웹 서비스, 이메일 등 서비스를 실직적으로 사람들에게 제공하는 층이다.
애플리케이션 계층은 파일 전송, 데이터베이스 ,원격 접속, 메일 전송 등의 응용 서비스를 네트워크에 접속하는
역할을 하고 여러가지 서비스를 제공한다. 응용 프로세스가 네트워크에 접근하는 수단을 제공하여 데이터를 서로
교환하는 창구 역할을 하고 사용자 인터페이스를 제공한다.
2. 프로토콜 및 서비스
TCP 프로토콜 | FTP (21) | 장치와 장치 간의 파일을 전송하는데 사용되는 표준 통신 프로토콜 |
HTTP (80) | WWW을 위한 데이터 통신의 기초이자 웹 사이트를 이용하는데 쓰는 프로토콜 | |
SMTP (25) | 전자 메일 전송을 위한 인터넷 표준 통신 프로토콜 | |
POP3 (110) | 이메일을 수신하는 표준 프로토콜 | |
IMAP (143) | 이메일 저장 및 복사하는 표준 프로토콜 |
UDP 프로토콜 | DHCP (67, 68) | 네트워크의 각 노드에 유일한 IP 주소를 자동을 할당하고 관리하는 서비스 |
SNMP (161) | 다른 네트워크 장치를 원격에서 관리할 수 있는 방버을 제공하는 프로토콜 |
TCP & UDP 프로토콜 | DNS (53) | 도메인 주소와 IP주소를 매핑해주는 서버 |
❒ 전송 계층
1. 전송 계층이란?
전송계층은 송신자와 수신자를 연결하는 통신 서비스를 제공하며 '연결 지향 데이터 스트림 지원', '신뢰성',
'흐름 제어'를 제공할 수 있으며 애플리케이션과 인터넷 계층 사이의 데이터가 전달될 때 중계 역할을 한다.
또한 인터넷 계층에서 전송된 데이터를 어떤 애플리케이션으로 보낼지 판독하고, 인터넷 계층으로 전송할
경로를 선택한다. 대표적으로 TCP, UDP 프로토콜이 있다.
TCP | 1. 패킷 사이의 순서 보장한다. |
2. 연결 지향형 프로토콜을 사용하여 신뢰성을 구축한다. | |
3. 가상회선 패킷 교환 방식을 사용한다. |
UDP | 1. 패킷 사이의 순서를 보장하지 않는다. |
2. 비연결 지향형 프로토콜을 사용하여 신뢰성이 떨어진다. | |
3. 단순히 데이터만 주는 데이터그램 패킷 교환 방식을 사용한다. |
2. TCP
내용이 많아서 별도로 작성 (링크)
3. UDP
UDP는 비연결 지향 프로토콜로, TCP와 달리 패킷이나 흐름 제어등의 기능을 제공하지 않는다.
UDP헤더는 간단하기 때문에 상대적으로 통신 과부하가 적다.
UDP 통신은 요청 메시지와 응답 메시지만으로 구성되고 줒로 적은 양의 데이터 전송에 사용된다.
UDP가 사용하는 데이터그램 패킷 교환상식은 패킷이 독립적으로 이동하며 최적의 경로를 선택하여
가는데, 하나의 메시지에서 분할된 여러 패킷은 서로 다른 경로로 전송될 수 있으며 도착한 순서가
다를 수 있다는 방식을 뜻한다.
❒ 인터넷 계층
1. 인터넷 계층이란?
인터넷 계층은 장치로부터 받은 네크워크 패킷을 IP 주소로 지정된 목적지로 전송하기 위해 사용되는
계층이다. IP, ARP, ICMP 등이 있으며 패킷을 수신해야 할 상대의 주소를 지정하여 데이터를 전달한다.
상대방이 제대로 받았는지에 대해 보장하지 않는 비연결형적인 특징을 가기고 있다.
네트워크 장비로는 라우터, L3 스위치를 사용한다.
라우터와 라우팅에 대한 자세한 내용은 깃블로그에서 읽기
라우터란?
서로 다른 네트워크 간의 통신이 가능한 이유는 인터넷 계층이 있기 때문인데,
다른 네트워크로 데이터를 전송하려면 라우터라는 네트워크 접속 장치가 필요하다.
라우터는 라우팅을 수행하며, 라우팅 테이블을 통해 경로 정보를 등록 및 관리한다.
흔히 집에서 사용하는 공유기가 바로 라우터이다.
라우팅이란?
수신지 컴퓨터까지 단일 또는 복수 경로가 생길 수 있는데, 라우팅은 수신지 컴퓨터의
IP 주소까지 어떤 경로로 데이터를 전송할지 최적의 경로를 찾는 것을 말한다.
2. IP 프로토콜
IP 프로토콜은 데이터가 제대로 수신되었는지 확인하는 기능이 없는 비연결형 프로토콜이다.
즉 IP는 최선을 다해 패킷을 수신지까지 전송하지만 전송 완료를 보장하지 않는다.
비연결형 데이터그램 프로토콜은 각 데이터그램을 독립적으로 처리하고 수신지까지 다른 경로로
전송할 수 있다. 통신 접속 절차나 패킷 전체의 내용이 정상인지는 상위 계층이 TCP에서 확인한다.
3. PDU
인터넷 계층에서의 PDU는 두 가지 명칭, 패킷(Packet)과 데이터그램(Datagram)으로 불릴 수 있다.
이는 문맥과 용어 사용의 차이로 인한 것입니다.
패킷(Packet)
일반적으로 IP 네트워크에서 흔히 사용하는 용어로 전달되는 데이터 단위를 지칭한다.
데이터그램(Datagram)
데이터그램은 비연결성 전송(연결을 설정하지 않고 독립적으로 전송되는 데이터 단위)에서 사용된다.
UDP에서 자주 사용되는 용어다. IP 계층에서도 비연결성 전송의 관점에서 데이터그램이라는 용어를 사용할 수 있다.
4. 역할
- 논리 주소 지정 : 송신지와 수신지 주소를 헤더에 포함한다.
- 라우팅 : 다양한 경로 중 패킷의 최적의 경로를 설정한다.
- 주소 변환 : 대응하는 물리 주소를 찾기 위해 논리 주소를 해석한다.
- 다중화 : 하나의 물리적 회선만 사용하여 많은 장치에 데이터를 동시에 전송한다.
- 패킷 순서 제어 : 도착하는 패킷의 순서를 바로잡아 상위 계층의 메시지를 재구성하는 데 사용한다.
5. IPv4 그리고 IPv6
이 내용은 깃블로그에 정리해두었다.
❒ 링크 계층
1. 링크 계층이란?
링크 계층은 전선, 광섬유, 무선 등으로 실질적으로 데이터를 전달하며 장치 간에 신호를 주고받는
'규칙'을 정하는 계층이다. 참고로 네트워크 접근(Network Access) 계층이라고도 한다.
OSI 7계층 모델에서는 이를 물리 계층과 데이터 링크 계층으로 나누기도 하는데 물리 계층은
무선 LAN과 유선LAN을 통해 0과1로 이루어진 데이터를 보내는 계층을 말하며,
데이터 링크 계층은 '이더넷 프레임'을 통해 에러 확인, 흐름 제어,접근 제어를 담장하는 계층을 말한다.
2. 유선 LAN
전이중화 통신
전이중화 통신은 양쪽 장치가 동시에 송수신할 수 있는 방식을 말한다.
유선 LAN을 이루는 케이블
트위스터 페어 케이블 & 광섬유 케이블
3. 무선 LAN
반이중화 통신
반이중화 통신은 양쪽 장치는 서로 통신할 수 있지만, 동시에는 통신할 수 없으면
한 방향만 통신할 수 있는 방식을 말한다.
CSMA/CA
반이중화 통신 중 하나로 장치에서 데이터를 보내기 전에
캐리어 감지 등으로 사전에 가능한 한 충동을 방지하는 방식을 사용한다.
❒ 계층간 데이터 송수신 과정
1. 송수신 과정
HTTP를 통해 웹 서버에 있는 데이터를 요청하면 어떤 과정이 이루어질까?
애플리케이션 계층에서 전송 계층으로 사용자가 보내는 request 값들이 캡슐화 과정을 거쳐
전달되고, 다시 링크 계층을 통해 해당 서버와 통신을 하고, 해당 서버의 링크 계층으로 부터
애플리케이션까지 비캡슐화 과정을 거쳐 데이터가 전송된다.
2. 캡슐화
캡슐화 과정은 상위 계층의 헤더와 데이터를 하위 계층의 데이터 부분에 포함시키고
해당 계층의 헤더를 삽입하는 과정을 말한다.
3. 비캡슐화
비캡슐화 과정은 하위 계층에서 상위 계층으로 가며 각 헤더 부분을 제거하는 과정을 말한다.
캡슐화 데이터를 받게 되면 링크 계층에서부터 타고 올라오면서 프레임화된 데이터는
다시 패킷화를 거쳐 세그먼트, 데이터그램화를 거쳐 메시지화가 되는 비캡슐화 과정이 일어난다.
그 이후 최종적으로 사용자에게 애플리케이션 PDU인 메시지로 전달된다.
4. PDU (Protocol Data Unit)
애플리케이션 계층 | 메시지 |
전송 계층 | 세그먼트(TCP) / 데이터그램(UDP) |
인터넷 계층 | 패킷 |
링크 계층 | 프레임(데이터 링크 계층) / 비트(물리 계층) |
참고로 PDU 중 아래 계층인 비트로 송수신하는 것이 모든 PDU 중 가장 빠르고 효율성이 높다.
하지만 애플리케이션 계층에서는 문자열을 기반으로 송수신을 하는데,
그 이유는 헤더에 authorization 값 등 다른 값들을 넣는 확장이 쉽기 때문이다.
❒ 면접 대비
1. TCP/IP 모델을 계층 별로 설명하세요.
TCP/IP는 인터넷에 접속하는 프로토콜 중에서 가장 중요한 프로토콜로
TCP 프로토콜, IP 프로토콜 외에 여러 프로토콜의 집합입니다.
총 4계층으로 구성되며 각각 애플리케이션 계층, 전송 계층, 인터넷(네트워크)계층,
마지막으로 링크(물리) 계층이 있습니다.
애플리케이션 계층은 실질적으로 사용자에게 다양한 서비스를 제공하는 층입니다.
TCP 프로토콜과 UDP 프로토콜로 구분할 수 있습니다.
TCP 프로토콜에는 FTP, HTTP(80), POP3, SMTP 등의 프로토콜이 있습니다.
UDP 프로토콜에는 DNS 등이 있습니다. PDU는 메시지 또는 데이터라고 합니다.
전송계층은 송신시와 수신지를 연결하는 통신 서비스를 제공하며, 애플리케이션 계층과
인터넷 계층 사이의 중계자 역할을 합니다.대표적인 프로토콜로는 TCP/UDP 가 있습니다.
PDU는 TCP 프로토콜의 경우 세그먼트, UDP 프로토콜의 경우 데이터그램이라고 합니다.
여기에서는 데이터를 제대로 전달받았는지, 제대로 전달받지 않았을 경우 다시 보내달라고
재용청하는 프로세스가 있습니다.
인터넷 계층 또는 네트워크 계층은 네트워크 패킷을 지정된 IP 주소로 전송하는 역할을 합니다.
해당 계층은 비연결형적인 특징을 가지고 있어, 데이터가 제대로 전송됐는지에 대한 여부는
신경쓰지 않습니다. 대표적인 프로토콜은 IP 프로토콜이 있습니다. 일반적으로 인터넷 계층의
PDU는 패킷이라고 합니다. 그러나 문장의 문맥에 따라 데이터 그램이라는 용어도 사용합니다.
그 이유는 앞서 언급했듯, IP 프로토콜은 비연결형적인 특성을 가지고 있습니다.
UDP도 이런 특성을 가지고 있어 데이터 그램이라고 하듯 IP에서도 이런 관점으로 데이터 그램
이라는 용어를 쓰기도 합니다.
마지막으로 링크 계층이 있습니다. 링크 계층은 데이터 링크/물리 계층으로 나뉠 수 있습니다.
물리 계층은 0과 1로 이루어진 데이터를 보내며, 데이터 링크 계층은 '이더넷 프레임'을 통해
에러 확인, 흐름 제어,접근 제어를 담장하는 계층을 말합니다.
2. TCP와 UDP의 차이를 설명해주세요.
1번의 꼬리질문
가장 대표적인 차이점은 연결형/비연결형 입니다.
TCP 먼저 설명드리겠습니다. TCP는 두 네트워크 사이의 3-way handshake 과정을 통해 신뢰성을 구축하여
연결을 맺습니다. 연결을 종료할 때는 4-way handshake 과정을 통해 안전하게 연결을 종료합니다.
결과적으로 패킷이 순서대로 전송이 되며 안정적으로 데이터를 송수신 할 수 있습니다.
반면에 UDP는 이런 과정 없이 연결을 맺기 때문에 상대적으로 신뢰성이 떨어집니다.
패킷도 순서대로 전송되지 않을 뿐더러 일부 데이터의 유실이 있을 수 있습니다.
3. 3-way handshake의 과정을 설명해주세요.
1번의 꼬리질문
4. 4-way handshake의 과정을 설명해주세요 .
1번 또는 3번의 꼬리질문
5. IPv4와 IPv6에 대해서 설명해주세요.
IPv4는 Internet Protocol version 4의 약자로 네트워크에 연결된 컴퓨터를 식별하기
위해 32비트의 IP Address를 사용합니다.
IPv6는 128 비트의 어드레스를 사용하여 IPv4 보다 많은 IP 제공합니다.
애당초에 라우터에서 데이터를 분할하지 않는 방식으로 설계되어 IP 헤더 부분에
분할 관련 필드는 옵션으로 되어 있습니다.
IPv4는 심각한 고갈 문제를 겪고 있는데요. 이를 해결는 방법을 몇 가지 설명해보겠습니다.
1. IPv6의 도입
IPv6는 128 비트의 어드레스를 사용하여 IPv4 보다 많은 IP 제공합니다.
2. Public IP
퍼블릭 IP를 사용함으로써 내부적으로 중복된는 IP를 허용합니다.
3. 서브넷 마스크
서브넷 마스크는 IP 주소를 네트워크 부분과 호스트 부분으로 나누는 역할을 하는 32비트의 숫자입니다.
서브넷 마스크를 사용해서 Address 클래스의 네트워크 부 길이를 유연하게 늘려서 사용할 수 있습니다.
단, 네트워크 부의 길이를 줄이지는 못합니다. 따라서 서브넷을 도입하는 경우에는 호스트 부가 가진
클래스A나 B의 어드레스를 세분화해야 할 때 사용하는 것이 일반적입니다.
6. IPv4와 IPv6는 어떻게 통신하나요?
총 3가지 방식을 사용해서 통신할 수 있습니다.
1. 이중 스택 방법
이 방법은 하나의 장비에서 IPv4와 IPv6어드레스를 모두 할당한 후 둘 다 사용하게 만드는 방법입니다.
하지만 이 방법은 IPv4 어드레스가 필요하여 IPv4 어드레스 고갈 문제에 치명적입닏나.
2. 터널링
이 방법은 2개의 IPv6 호스트 아시에 IPv4 망이 있을 경우에, IPv6 패킷을 IPv4 패킷 속에
캡슐화하여 사용하는 기술입니다.
3. NAT(Network Address Transportation)
이 기술은 `프라이빗 <> 퍼블릭` 변환에 사용되는 기술인데, `IPv4 <> IPv6` 변환에도 사용됩니다.
Q) 왜 프라이빗IP를 퍼블릭IP로 변환 하나요?
보통 가정에서는 프라이빗 IP어드레스를 사용합니다. 하지만 프라이빗 IP는 가상의 주소라
퍼블릭 IP를 사용하는 서버와의 통신을 불가능하기 때문입니다.
7. PDU란 무엇이면 계층별로 어떻게 구분되나요?
애플리케이션 계층은 데이터/메시지
전송 계층은 세그먼트/데이터그램
인터넷 계층은 패킷
링크 계층은 프레임 / 비트
물리계층의 PDU 비트가 제일 전송이 빠릅니다.
애플리케이션 계층에서 가장 빠른 비트를 사용하지 않고 문자열을 사용하는 이유는,
헤더에 authorization 등의 부가정보를 추가해야 하는 경우가 있기 때문입니다.
8. 계층간 데이터 송/수신 과정을 설명해주세요.
캡슐화, 비캡슐화 키워드 중요!!