728x90
🔑TCP/IP 4계층 모델
- 네트워크에서 사용되는 통신 프로토콜의 집합으로 계층들은 프로토콜의 네트워킹 범위에 따라 네 개의 추상화 계층으로 구성됨
- 계층구조
애플리케이션 계층 |
전송 계층 |
인터넷 계층 |
링크 계층 |
🔑 애플리케이션 계층
- FTP, HTTP, SSH, SMTP, DNS 등 응용프로그램이 사용되는 프로토콜 계층
- FTP : 장치 간 파일을 전송하는데 사용되는 표준 프로토콜
- SSH : 보안되지 않은 네트워크에서 네트워크 서비스를 안전하게 운영하기 위한 암호화 네트워크 프로토콜
- HTTP : 데이터 통신의 기초, 웹 사이트를 이용하는 데 사용되는 프로토콜
- SMTP : 전자 메일 전송을 위한 인터넷 표준 통신 프로토콜
- DNS : 도메인 이름과 IP주소를 매핑해주는 서버
- 실질적으로 서비스를 제공함
🔑 전송 계층
- 송신자와 수신자를 연결하는 통신 서비스 제공
- 연결 지향 데이터 스트림 지원, 신뢰성, 흐름 제어 제공
- 애플리케이션과 인터넷 계층 사이의 데이터가 전달될 때 중계 역할을 함
- 대표적으로 TCP, UDP
🔑TCP
- 패킷 사이 순서를 보장하고 연결 지향 프로토콜을 사용해 연결하여 신뢰성을 구축해서 수신여부를 확인 함
- 가상회선 패킷 교환 방식 사용
- 각 패킷에는 가상회선 식별자가 포함되어있음
- 모든 패킷을 전송하면 가상 회선이 해제되고 패킷들은 전송된 순서대로 도착함
- 패킷이 회선을 따라서 순서대로 수신자에게 도착!
🔑 TCP 연결 성립과정 : 3웨이 핸드쉐이크(3-way handshake)
- SYN 단계 : 연결요청 플래그
클라이언트가 서버에 자신의 ISN을 담아 SYN에 보냄
ISN은 새로운 TCP 연결의 첫번째 패킷에 할당된 임의의 시퀀스 번호로 장치마다 다를 수 있음 - SYN+ACK 단계 : 연결요청 플래그 + 응답 플래그
서버는 클라이언트의 SYN수신
서버의 ISN을 보내고 승인번호로 클라이언트의 ISN+1을 보냄 - ACK단계 : 응답 플래그
클라이언트는 서버의 ISN+1 값의 승인 번호를 담아 ACK를 서버에 보냄
- 3웨이 핸드 쉐이크 과정을 통해 TCP는 신뢰성을 얻게 됨
🔑TCP 연결 해제 과정 : 4웨이 핸드쉐이크(4-way handshake)
- 먼저 클라이언트가 연결을 닫으려고 할 때 FIN으로 설정된 세크먼트를 보냄
클라이언트는 FIN_WAIT_1상태로 들어가고 서버의 응답을 기다림 - 서버는 클라이언트로 ACK라는 승인 세그먼트를 보내고 CLOSE_WAIT상태로 들어감
클라이언트가 세그먼트를 받으면 FIN_WAIT_2상태로 들어감 - 서버는 ACK를 보내고 일정 시간 이후에 클라이언트에 FIN이라는 세그먼트를 보냄
- 클라이언트는 TIME_WAIT상태가 되고 다시 서버로 ACK를 보내 서버는 CLOSED상태가 됨 이후에 클라이언트는 어느 정도 시간을 대기한 후 연결이 닫히고 클라이언트와 서버의 모든 자원이 연결 해제됨
- TIME_WAIT 상태
- 일정 시간 후 연결을 닫음
- 소켓이 바로 소멸되지 않고 일정 시간 유지되는 상태로 지연 패킷 등의 문제점을 해결하는데에 사용함. OS마다 다를 수 있음
- 지연 패킷이 발생할 경우 대비하기 위함
패킷이 뒤늦게 도달하고 이를 처리하지 못하면 데이터 무결성 문제가 발생함- 데이터 무결성 : 데이터의 정확성과 일관성을 유지하고 보증하는 것
- 두 장치가 연결이 닫혔는지 확인하기 위해 필요함
LAST_ACK 상태에서 닫히면 다시 새로운 연결을 하고자 할 때 장치는 계속 LAST_ACK상태로 있게 되어 접속 오류가 발생하게 됨
- TIME_WAIT 상태
🔑UDP
- 순서가 보장되어있지 않고 수신 여부를 확인하지 않음
- 단순히 데이터만 주는 데이터그램 패킷 교환 방식을 사용
- 패킷이 독립적으로 이동하며 최적의 경로를 선택해 감
- 하나의 메시지에서 분할된 여러 패킷은 서로 다른 경로로 전송될 수 있고 도착한 순서가 다를 수 있음
🔑 인터넷 계층
- 장치로부터 받은 네트워크 패킷을 IP주소로 지정된 목적지로 전송하기 위해 사용
- IP, ARP, ICMP등이 있음
- 패킷을 수신해야 할 상대의 주소를 지정해 데이터를 전달함
- 상대가 데이터를 제대로 받았는지 보장하지 않는 비연결형적의 특징
🔑링크계층, 네트워크 접근 계층
- 전선, 광섬유, 무선 등 실질적으로 데이터를 전달하며 장치 간 신호를 주고 받는 규칙을 정하는 계층
- 물리 계층
- 무선 LAN과 유선 LAN을 통해 0과 1로 이루어진 데이터를 보내는 계층
- 유선 LAN
- 유선 LAN을 이루는 이더넷 IEEE802.3이라는 프로토콜을 따름
- 양쪽 장치가 동시에 송수신하고 송신로와 수신로로 나눠 데이터를 주고 받는 전이중화 통신을 사용함
- 유선 LAN을 이루는 케이블
- TP케이블, 트위스트 페어 케이블 : 8개의 구리선을 두개씩 꼬아 하나로 묶은 케이블
- 광섬유 케이블 : 광섬유로 만들어 레이저를 이용해 통신하기 때문에 구리서노가 비교할 수 없을 만큼 장거리 및 고속 통신이 가능함
- 무선 LAN
- 무선 신호 전달 방식을 이용해 2대 이상의 장치를 연결함
- 송수신에 같은 채널을 사용해 반이중화 통신을 사용함
- 양쪽 장치는 서로 통신할 수 있지만 동시에 통신할 수 없음
- 한 번에 한 방향만 통신 가능
- 장치가 신호를 수신하기 시작하면 응답하기 전에 전송이 완료될 때까지 기다려야 함
- 둘 이상의 장치가 동시에 전송하면 충돌이 발생해 메시지가 손실되거나 왜곡될 수 있어 충돌방지 시스템이 필요함
- CSMA/CA
반이중화 통신 중 하나로 장치에서 데이터를 보내기 전에 캐리어 감지 등으로 사전에 가능한 한 충돌을 방지하는 방식을 사용함
- 무선 LAN을 이루는 주파수
- 2.4GHz : 장애물에 강하지만 전파간섭이 일어날 수 있음
- 5GHz : 사용할 수 있는 채널이 많고 동시 사용이 가능해 상대적으로 깨끗한 전파 환경 구축이 가능
- 와이파이(wifi)
- 전자기기들이 무선 LAN 신호에 연결할 수 있게 함
- 공유기를 통해 유선 LAN에 흐르는 신호를 무선 LAN신호로 바꿔 신호가 닿는 범위 내에서 무선 인터넷을 사용할 수 있게 됨
- BSS : 기본 서비스 집합, 동일 BSS내에 있는 AP장치들이 서로 통신 가능한 구조
- ESS : 하나 이상 연결된 BSS 구조, 사용자는 한 장소에서 다른 장소로 이동해 중단없이 네트워크에 계속 연결할 수 있음
- 데이터 링크 계층
- 이더넷 프레임을 통해 전달받은 데이터의 에러를 검출하고 캡슐화함
- Preamble : 이더넷 프레임의 시작을 알림
- SFD(Start Frame Delimiter) : 다음 바이트부터 MAC 주소필드가 시작됨을 알림
- DMAC, SMAC : 수신, 송신 MAC 주소
- Ether type : 데이터 계층위의 계층인 IP프로토콜 정의
- Payload : 전달받은 데이터
- CRC : 에러확인 비트
- 이더넷 프레임을 통해 전달받은 데이터의 에러를 검출하고 캡슐화함
- 유선 LAN
- 무선 LAN과 유선 LAN을 통해 0과 1로 이루어진 데이터를 보내는 계층
Preamble (7byte) |
SFD(1byte) | DMAC (6byte) | SMAC (6byte) | Ether type (2byte) |
Payload | CRC (4byte) |
🔑계층간 데이터 송수신 과정
- 캡슐화 과정
상위 계층의 헤더와 데이터를 하위 계층의 데이터 부분에 포함시키고 해당 계층의 헤더를 삽입하는 과정
- 비캡슐화 과정
하위계층에서 상위 계층으로 가며 각 계층의 헤더 부분을 제거하는 과정
🔑PDU(Protocol Data Unit)
- 네트워크의 어떤 계층에서 계층으로 데이터가 전달될 때 한 덩어리의 단위
- 헤더와 페이로드로 구성
- 헤더(header) : 제어 관련 정보 포함
- 페이로드(payload) : 데이터, 계층마다 명칭이 다름
- 애플리케이션 계층 : 메시지
- 전송 계층 : 세그먼트(TCP), 데이터그램(UDP)
- 인터넷 계층 : 패킷
- 링크 계층 : 프레임(데이터 링크 계층), 비트(물리 계층)
TCP/IP 계층이 무엇으로 구성되어있는지 정도는 이해하고 있지만, 3웨이 핸드쉐이크나 캡슐화 과정같은 조금이라도 복잡한 내용은 아직 이해가 부족하다.
더 많은 레퍼런스 찾아보고 문서 보면서 이해해보자
728x90
'CS' 카테고리의 다른 글
[면접을 위한 CS 전공지식 노트] 2.4. IP주소 (0) | 2024.02.16 |
---|---|
[면접을 위한 CS 전공지식 노트] 2.3. 네트워크 기기 (2) | 2024.02.15 |
[면접을 위한 CS 전공지식 노트] 2.1 네트워크 기초(2) (1) | 2024.02.06 |
[면접을 위한 CS 전공지식 노트] 2.1. 네트워크 기초(1) (1) | 2024.02.06 |
[면접을 위한 CS 전공지식 노트] 프로그래밍 패러다임 (2) | 2024.02.05 |