**본 포스팅은 '면접을 위한 CS 전공지식 노트'라는 책을 기반으로 공부한 내용을 정리한 것입니다.
인터넷 프로토콜 스위트
- 인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 통신규약(프로토콜)의 모음
- 인터넷 프로토콜 슈트 중 TCP와 IP가 가장 많이 쓰이기 때문에 TCP/IP 프로토콜 슈트라고도 불린다.
2.2.1 계층 구조
네트워크 계층을 나누는 이유?
- 프로토콜에 따라 계층을 나눔으로서 통신에 필요한 작업을 명확히 구분하고 유지보수를 하기 쉬워진다.
TCP/IP 4계층과 OSI 7계층 비교
공통점
- 계층화된 시스템을 사용하여 정보를 처리하고 논리적인 네트워킹 방법을 제공
- 각 계층은 특정한 기능을 하므로써 오류 발생 시 문제가 발생하는 위치를 쉽게 찾아낼 수 있다.
차이점
- OSI 모델이 TCP/IP 모델이 단일 계층으로 그룹화하는 여러 기능을 분할한다는 것
- OSI 모델이 네트워크 기능을 더 많은 계층으로 분할한다는 사실은 문제 해결과 네트워크 성능 개선을 보다 간단하게 만든다.
- 그러나 TCP/IP는 응용 프로그램이 더 많다는 이점이 있다.
TCP/IP가 현재 주로 사용되는 이유?
- 1982년 TCP/IP의 사양이 결정되었을 때 유닉스 운영체제에서 TCP/IP를 탑재하였기 때문
TCP/IP 4계층
1) 애플리케이션 계층
- FTP, HTTP, SSH, SMTP, DNS 등 응용프로그램이 사용되는 프로토콜 계층
- 웹 서비스, 이메일 등 서비스를 실질적으로 사람들에게 제공하는 층
2) 전송 계층
- 송신자와 수신자를 연결하는 통신 서비스를 제공
- 애플리케이션과 인터넷 계층 사이의 데이터가 전달될 때의 중계 역할
- TCP (전송 제어 프로토콜) : 가상회선 패킷 교환 방식 사용
- UDP (사용자 데이터그램 프로토콜) : 데이터그램 패킷 교환 방식 사용
가상 회선 패킷 교환 방식
- 각 패킷에는 가상회선 식별자가 포함
- 모든 패킷을 전송하면 가상회선이 해제되고 패킷들은 전송된 '순서대로' 도착 (패킷 사이의 순서를 보장)
데이터그램 패킷 교환 방식
- 패킷이 독립적으로 이동하며 최적의 경로를 선택
- 하나의 메시지에서 분할된 여러 패킷은 서로 다른 경로로 전송될 수 있음
- 패킷이 도착한 순서가 다를 수 있음
TCP 연결 성립 과정 : 3-웨이 핸드셰이크
1. syn 단계 : 클라이언트는 서버에 클라이언트의 ISN을 담아 SYN을 보낸다. ISN은 새로운 TCP 연결의 첫 번째 패킷에 할당된 임의의 시퀀스 번호
2. SYN + ACK 단계 : 서버는 클라이언트의 YN을 수신하고 서버의 ISN을 보낸다. 승인번호로 클라이언트의 ISN + 1을 보낸다.
3. ACK 단계 : 클라이언트는 서버의 ISN + 1한 값인 승인번호를 담아 ACK를 서버에 보낸다.
- 3-웨이 핸드셰이크 과정 이후 신뢰성이 구축되고 데이터 전송을 시작
- TCP는 이 과정이 있기 때문에 신뢰성이 있는 게층이라고 한다.
- UDP는 이 과정이 없기 때문에 신뢰성이 없는 계층이라고 한다.
TCP 연결 해제 과정 : 4-웨이 핸드셰이크
- TCP 연결을 종료하려면 다음 4개의 TCP 패킷을 교환해야함
-
클라이언트 -> 서버
- FIN으로 설정된 세그먼트 보냄
- 클라이언트는 FIN_WAIT_1 상태로 응답을 기다림
-
서버 -> 클라이언트
- ACK라는 승인 세그먼트를 보냄
- 서버는 CLOSE_WAIT 상태로
- 클라이언트가 ACK 세그먼트를 받으면 FIN_WAIT_2 상태
-
서버 -> 클라이언트
- 2에서 ACK를 보내고 일정시간 이후에 클라이언트에 FIN이라는 세그먼트를 보냄
-
클라이언트 -> 서버
- 클라이언트는 TIME_WAIT 상태가 되고 다시 서버로 ACK를 보내면 서버는 CLOSED 상태가 됨
- 이후 클라이언트는 어느 정도 시간을 대기한 후 연결을 닫고 모든 연결이 해제
TIME_WAIT?
그냥 연결을 바로 닫지 않고 일정시간을 기다릴까?
- 지연 패킷이 발생할 경우를 대비
- 두 장치가 연결이 닫혔는지 확인하기 위해
3) 인터넷 계층
- 장치로부터 받은 네트워크 패킷을 IP 주소로 지정된 목적지로 전송
- IP, ARP, ICMP 등
- 상대방이 제대로 받았는지 보장하지 않는 비연결형적 특징
4) 링크 계층
- 전선, 광섬유, 무선 등으로 실질적으로 데이터를 전달
- 장치 간에 신호를 주고받는 규칙을 정하는 계층
- 물리계층, 데이터 링크 계층으로 나누기도 함
계층 간 데이터 송수신 과정
- 애플리케이션 계층 ~ 링크계층 : 캡슐화 과정
- 링크 계층 ~ 애플리케이션 계층 : 비캡슐화 과정
캡슐화 과정
- 상위 게층의 헤더와 데이터를 하위 계층의 데이터 부분에 포함시키고 해당 계층의 헤더를 삽입하는 과정
비캡슐화 과정
- 하위 계층에서 상위 계층으로 가며 각 계층의 헤더부분을 제거하는 과정
2.2.2 PDU
PDU (Protocol Data Unit)
- 한 계층에서 계층으로 데이터가 전달될 때 한 덩어리의 단위
- 헤더 : 제어 관련 정보들이 포함
- 페이로드 : 데이터를 의미
- 각 계층에서 부르는 명칭이 다르다
각 계층에서 부르는 명칭
- 애플리케이션 계층 : 메싲
- 전송 계층 : 세그먼트(TCP), 데이터그램(UDP)
- 인터넷 계층 : 패킷
- 링크 계층 : 프레임(데이터 링크 계층), 비트(물리 계층)
내용 출처