네트워크 통신이 일어나는 과정은 위와 같이 나누어진다. TCP/IP 4 계층은 OSI 7 계층보다 먼저 개발되었으며 TCP/IP 프로토콜의 계층은 OSI 모델의 계층과 정확하게 일치하지는 않는다. 각각의 계층은 서로 독립되어 있기 때문에, 한 계층이 고장 나더라도 전체를 고칠 필요 없이 고장 난 계층만 따로 고쳐주면 문제가 해결된다. OSI 7 계층의 작동 원리는 아래와 같다.
- 응용, 표현, 세션, 전송, 네트워크, 데이터 링크, 물리 계층으로 나뉜다.
- 데이터 전송 : 7계층에서 1계층으로 이동하면서 각각의 헤더를 붙인다.(캡슐화)
- 2계층에서는 오류제어를 위해 꼬리 부분에도 헤더를 추가한다.
- 데이터가
1
,0
의 신호가 되어 매체(동축케이블, 광섬유 등)를 통해 전송된다.- 데이터 수신 : 1계층에서 7계층으로 이동하면서 헤더를 떼어낸다.(디캡슐화)
개발자들은 주로 L4(전송 계층), L7(응용 계층)을 가장 많이 다룬다. 이 둘을 Load Balancer라고 부른다. 방화벽도 이 둘에만 있다. L4는 IP와 PORT로 차단하는 역할을 하며, L7은 L4의 기능에 더불어 WEB 방화벽(WAF)이 추가된다.
발신할 데이터를 디지털 신호에서 전기 신호로 바꾸고, 수신한 데이터를 전기 신호에서 디지털 신호로 바꾸는 계층이다. 데이터를 전기 신호로 변환하여 비트열을 주고 받는 일만 하기 때문에, 데이터의 내용이나 에러에 대한 정보는 전혀 없다.
네크워크는 위 사진과 같이 노드와 링크로 구성되어 있다. 네트워크는 상호 연결된 노드의 모임으로 구성되며, 중간 노드를 경유하여 송신지 호스트에서 수신지 호스트로 데이터가 전송된다.
데이터 링크 계층은 직접 연결된 두 개의 노드 사이에서 안전하게 데이터가 전송되도록 하고, 흐름 제어 및 오류 수정의 기능을 담당하는 계층이다.
프레임(Frame)이라는 데이터 단위를 사용하며, 주로 MAC주소(Media Access Control Address)를 사용하여 통신한다.
네트워크 계층은 데이터의 최종 도착지, 즉 수신자를 명시한다. 또 해당 목적지까지 빠르게 도달하기 위한 최적의 경로를 설정하는 라우팅 기능을 가지고 있다.
데이터가 노드를 경유하여 전송될 때, 송신지와 수신지를 식별하기 위해 필요한 것이 IP 주소다. 네트워크 계층은 패킷(Packet)이라는 데이터 단위를 사용하여 통신한다. 패킷은 헤더와 데이터 조각으로 이루어져있는데, 헤더에는 송신지와 수신지 등 패킷의 전송에 필요한 정보가 담겨있다.
IP(Internet Protocol)
클라이언트와 서버가 통신하기 위해서는 IP 주소(IP Address)가 필요하다. 컴퓨터에 IP주소를 부여하여 해당 주소에 데이터를 전송하는 것이다. IP는 출발지와 목적지를 정확하게 알고 있다는 장점이 있지만, 몇 가지 한계점도 있다.
비연결성
만약 패킷을 받을 대상이 없거나 서비스 불능 상태여도 클라이언트는 패킷을 그대로 전송한다. 서버의 상태를 파악할 수 없기 때문이다.비신뢰성
서버가 데이터를 전달하던 중 장애가 생겨 패킷이 중간에 소실되더라도 클라이언트는 이를 파악할 방법이 없다. 또 전달할 데이터가 클 경우 패킷 단위로 나누어서 보내게 되는데, 이 때 패킷들은 다른 노드를 통해서 전달될 수도 있다. 따라서 패킷이 도착하는 순서가 정해져있지 않다.
통신을 활성화하기 위한 계층으로 응용 프로그램들이 전송을 할 수 있도록 한다. 세그먼트(Segment)라는 데이터 단위를 사용하며, 데이터 전송을 위해 포트(Port) 번호를 사용한다. 대표적인 프로토콜로 UDP와 TCP가 있다.
발신자와 수신자가 신뢰성있는 데이터를 주고 받도록 하여 상위 계층에서 유효성과 효율성을 신경 쓰지 않아도 되도록 하는 역할을 한다.
TCP(Transmission Control Protocol)
TCP는 IP보다 상위 계층에 있기 때문에 IP의 한계를 보완할 수 있다. TCP의 세그먼트에는 IP 패킷의 출발지 IP와 목적지 IP 정보를 보완할 수 있는 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보 등이 포함되어있다.
TCP의 특징은 다음과 같다.1. 3 way handshake를 사용하는 연결지향형 프로토콜
3 way handshake는 통신을 하는 장치간 서로 연결이 잘 되어있는지 확인하는 과정이다. 확인이 이루어지는 단계를 살펴보자.
- 클라이언트가 서버에 접속을 요청하는 SYN(Synchronize) 패킷을 보낸다.
- 서버는 클라이언트에게 요청을 수락한다는 ACK(Acknowledgmen) 와 SYN가 설정된 패킷을 발송하고 클라이언트가 다시 ACK으로 응답하기를 기다린다.
- 클라이언트가 서버에게 ACK을 보낸다.
위의 단계가 완료되면 연결이 성립되며 데이터를 전송할 수 있다.2. 데이터 전달 보증
TCP는 데이터 전송이 성공적으로 이루어질 경우 이에 대한 응답을 돌려주기 때문에 IP 패킷의 한계인 비연결성을 보완할 수 있다.
3. 순서 보장
패킷이 순서대로 도착하지 않을 경우 TCP 세그먼트에 있는 정보를 토대로 다시 패킷 전송을 요청할 수 있다. 즉, IP 패킷의 한계인 비신뢰성을 보완할 수 있다.
UDP(User Datagram Protocol)
UDP는 IP에 PORT와 체크섬(checksum) 필드 정보를 추가한 단순한 프로토콜이다. 3 way handshake 방식을 사용하지 않는 비연결 지향 프로토콜이기 때문에 데이터 전달 순서와 성공 유무가 보증이 안된다는 점에서 TCP와 비교했을 때 신뢰도는 낮지만, 비교적 빠르다는 장점이 있다.
💡 체크섬이란?
체크섬은 중복 검사의 한 형태로, 오류 정정을 통해, 공간(전자 통신)이나 시간(기억 장치) 속에서 송신된 자료의 무결성을 보호하는 단순한 방법이다.
통신하는 두 기기의 연결 상태를 관리하는 계층이다. 어떤 방식으로 통신할 것인지에 대한 결정을 하며, 데이터 전송 중 에러가 발생하거나 연결이 손실되었을 때 연결 복구에 대한 관리를 한다.
코드 간의 번역을 담당하는 계층으로, 데이터 전송의 효율과 안전을 위한 암호화(인코딩) 및 압축이 이루어진다. 데이터를 응용 프로그램 형식 또는 네트워크 형식으로 변환해줌으로 응용 계층에 데이터 형식의 차이에 대한 부담을 덜어준다.
응용 프로세스와 관계하여 사용자가 애플리케이션이 입력한 정보를 특정 프로토콜의 형식에 맞게 제출하는 계층이다. 응용 프로세스 간의 정보 교환을 담당한다. 처음에는 www 상의 하이퍼텍스트 형태의 문서를 전달하는데 주로 사용되었으며, 현재는 전자메일, 인터넷, 이미지, 비디오, 음성 등 다양한 형태의 데이터를 전달할 수 있다.
쉽게 이해하는 네트워크 11. 인터넷의 TCP/IP 프로토콜과 패킷 교환 방식
물 흐르듯 읽어보는 TCP/IP
[네트워크] OSI 7 계층 (OSI 7 LAYER) 기본 개념, 각 계층 설명
[네트워크] OSI 7 계층 참조 모델 (OSI 7 Layer Reference Model)