왜?
network 기본 지식 정리
OSI 7 계층에 대해 설명
OSI 모델은 국제표준화기구에서 개발한 모델, 컴퓨터 네트워크 프로토콜 디자인과 통신을 계층으로 나눠 설명한것
OSI 7 계층은 패킷 기반 통신으로서 각 계층의 순서와 담당하는 기술과 방식에 따라 데이터를 엔드 투 엔드로 전달하며 우리가 평소에 사용하는 LTE, 5G을 이 모델로 설명할 수 있습니다.
- 1 계층인 물리계층은 전기, 물리 신호에 따른 계층이며 단순한 전기적 신호 전달 역할을 합니다. 단위는 Bit를 쓰며 전선, 광케이블, 무선 전파 등이 여기에 해당합니다.
- 2 계층인 데이터 링크 계층은 1 계층의 물리적 링크인 MAC 주소를 참조해 장비 간 데이터 전송합니다. 전송하는 데이터(비트 모음)의 헤더에 목적지 주소를 붙이며 꼬리 부분에는 오류 검출을 위한 부분이 붙습니다. 이러한 데이터 구성을 프레임(frame)이라고 합니다. 그래서 물리 계층에서 발생할 수 있는 오류를 찾고 수정하는데 필요한 기능/절차들을 제공합니다. L2 스위치 장비, 브릿지, 이더넷, ARP 등의 프로토콜/기술들이 여기에 포함됩니다.
- 3 계층인 네트워크 계층은 데이터가 담긴 패킷의 경로를 설정하는 계층입니다. IP 주소를 할당하는 논리 주소 기능, IP 주소 기반을 네트워크 구분하는 라우팅 기능, 최적 경로 설정 기능이 있으며 IP, ICMP 등의 프로토콜/기술들이 포함됩니다.
- 4 계층인 전송 계층은 각 종단 간 데이터 전송의 전반적 조율을 담당합니다.여기선, 세그먼트(쪼개진 데이터 유닛)를 포트 번호로 구분하여 각 응용 계층이 나눠 받도록 하는 분할 작업, 서로 다른 장비 간 각기 다른 대역폭 속도 맞추는 흐름 제어 작업, 수신 못한 세그먼트만을 재송신하는 오류제어 작업, 데이터 수신 유/무 확인을 하는 연결형 작업, 데이터 수신 유/무 확인을 안 하는 비연결형 작업의 기능이 있습니다. TCP, UDP 등의 프로토콜/기술이 포함됩니다.
- 5 계층인 세션 계층은 데이터가 서로 만나는 환경 조성 단계이며 인증에 따른 권한 부여를 합니다. TLS, SSH 등의 프로토콜/기술이 포함됩니다.
- 6 계층인 표현 계층은 데이터를 빠르고 안전하게 전송하기 위해 데이터 압축, 암호화/복호화 단계입니다. SSL, JPEG, MPEG 등의 프로토콜/기술이 포함됩니다.
- 7 계층인 응용 계층은 도착 데이터를 브라우저나 메일, 메신저 같은 수단으로 최종 사용자가 확인하는 단계로 HTTP, HTTPS, SNMP, FTP, POP3 같은 프로토콜이 포함됩니다.
각 계층에서 데이터를 전송할 때 각 층마다 별도로 인식할 수 있는 헤더를 붙이게 되는데 이 과정을 캡슐화라고 하며 데이터가 전송 매체를 통해 전송된 후 헤더가 벗겨지게 되는 것을 디캡슐화라고 합니다. 이 말은 각 계층마다 요청/응답의 상호작용을 하기 때문에 서버/클라이언트 관계라고 할 수 있으며 각 계층은 아래 계층의 데이터가 되는 것을 알 수 있습니다.
각 계층에서 데이터를 구분하는 PUD(Process Data Unit) 개념에 대해서 한 번 더 말씀드리면, 1 계층은 전기적 신호인 Bit, 2 계층은 MAC Frame, 3 계층은 IP Packet, 4 계층은 TCP Segment, 5~7 계층은 Application Data가 단위로 구성됩니다.
TCP
TCP의 3 Way-HandShake
TCP는 연결형 서비스 자원 프로토콜로써, 호스트 간 신뢰성 있는 전달과 흐름 제어를 가능하게 합니다.
이런 TCP는 장치들 사이에 논리적 접속 성립(establish)을 위해 3-way Handshake를 사용합니다.
3-way Handshake TCP/IP 프로토콜을 이용한 통신을 하는 응용 프로그램(브라우저)이 데이터를 전송하기 전, 먼저 정확한 전송을 보장하기 위해 사전에 세션을 수립하는 과정입니다. 즉, 양쪽 모두 데이터 전송 준비가 되었다는 것을 보장하고, 실제로 데이터 전달하기 전 한쪽이 다른 쪽의 준비 상태를 알 수 있도록 합니다.
순서는 SYN -> SYN / ACK -> ACK이며 상태가 Established가 되면 TCP Connection이라는 가상 통신 회선이 구성됩니다.
풀어서 이야기하면, A클라이언트가 B서버에 접속 요청을 하기 위해서 먼저, B에 SYN 패킷을 보내고 응답을 기다립니다. B는 SYN 요청을 받고 요청 수락한다는 ACK와 SYN flag 설정된 패킷을 발송하고 응답을 기다립니다. A는 B에게 다시 ACK를 보내고 B의 상태가 Established 되어 연결이 이뤄지고 데이터 송수신이 된다.
여기서 SYN은 synchronize sequence numbers(순차 일련번호), ACK는 acknowledgement의 약자입니다.
TCP의 4 Way-HandShake?
3 Way-HandShake가 TCP 연결 초기화할 때 사용한다면, 4 Way-HandShake는 세션을 종료하기 위해 수행됩니다.
먼저, A클라이언트가 B서버에 연결 종료를 위해 FIN flag 보냅니다. B는 ACK(확인 메시지)를 보내고 자신의 통신이 끝날 때까지 TIME_WAIT 상태가 됩니다. B의 통신이 끝나면, 연결 종료되었다고 A에게 FIN flag를 보냅니다. A는 확인 메시지를 보냅니다.
TIME_WAIT 만약, 서버에서 FIN 전송 전에 보낸 다른 패킷이 라우팅 지연, 패킷 유실로 인한 재전송 등으로 인해 FIN 패킷보다 늦게 도착하는 상황일 경우, 이 패킷을 DROP 되고 데이터 유실이 발생합니다. 이에 대비해서, A는 B로부터 FIN을 수신하더라도 일정 시간(디폴트 240초) 동안 세션을 남겨놓고 잉여 패킷을 기다리는 과정을 의미합니다.