컴퓨터와 네트워크 기기가 상호간에 통신하기 위해서는 서로 같은 방법으로 통신해야만 한다.
어떻게 상대를 찾고, 어떻게 상대에게 이야기를 시작하고, 어떻게 이야기를 종료할까와 같은 규칙을 정해야한다.
이런 규칙을 바로 프로토콜이라고 부른다.
HTTP, 인터넷을 포함하여 일반적으로 사용하고 있는 네트워크는 TCP/IP라고 불리는 프로토콜위에서 동작하고 있다.
간단히 말하자면, 어떤 프로그램이 TCP/IP를 지원한다는 것은 인터넷을 연결하여 사용할 수 있다는 말을 의미합니다.
TCP는 Transmission Control Protocol의 약자로, 서버와 클라이언트간 데이터 전송의 신뢰성을 보장하는 역할을 담당합니다.
데이터는 네트워크선로를 통해 전달되는 과정 속에서 손실되거나 순서가 뒤바뀌어 전송될 수 있는데 TCP는 이런 손실을 검색하고 교정하여 순서를 재조합 할 수 있도록 도와줍니다.
만약 인터넷이 하나의 프로토콜로 되어있다면 사양이 변했을 때 전체를 바꿔야하지만 계층화되어 있으면 사양이 변경된 해당계층만 바꾸면 된다.
TCP/IP는 'Application Layer', 'Transport Layer', 'Network Layer', 'Datalink Layer' 총 4개의 계층으로 나뉘어져있다.
TCP/IP의 계층에 대해서 알아보기전에 OSI 7계층
에 대한 지식이 선행되어야한다. 알아봅시다..⭐️
OSI 는 각종 시스템간의 연결을 위하여 ISO 에서 제안한 모델로 Open System Interconnection Reference Model
이라는 단어처럼 시스템에 상관없이 서로의 시스템이 연결될수 있도록 만들어주는 모델입니다. 다음 이미지는 OSI 7계층의 이미지입니다. 1.1에서 설명한 TCP/IP의 계층과 유사한 이름들을 가지고 있는 것을 확인할 수 있습니다.
⬆️ 이미지 출처
컴퓨터와 컴퓨터는 데이터 통신을 할 때 위의 계층을 거치면서 데이터를 전송합니다. 복잡해보이는 이런 과정을 통해 통신을 하는 이유는 위에서도 말했듯이 관리가 쉽기 때문입니당🧐
필자같은 프론트엔드 개발자나 서비스 개발자들은 보통 Application Layer만 신경써서 만들면되지만 반대로 하드웨어 개발자들은 Physical Layer만 신경쓰면됩니다.
이런식으로 계층을 캡슐화하여 관리하면 개발 및 관리에 매우 효율적이라고 합니다.
OSI 7계층과 계층의 이름이 비슷했던 이유는 OSI 계층을 간략화한 것이기 때문입니다.
⬆️ 이미지 출처
TCP/IP의 계층에 대해 자세하게 설명하기 전에 TCP/IP는 현재 인터넷에서 사용하는 프로토콜 그룹(여러 계층에서 조직된 프로토콜 집합)임을 다시 한번 떠올려 보자.
전체 메시지가 완전하게 바른 순서로 도착하는 것을 보장합니다.
프로토콜 종류
TCP(Trasmission Control Protocol) : 연결지향 프로토콜로, 연결지향은 데이터 송신측과 데이터 수신측에서 전용의 데이터 전송 길을 만든다는 의미입니다.
UDP(User Datagram Protocol) : 비연결형 프로토콜
지금까지 TCP/IP의 계층에 대해 자세하게 살펴보았다. 하지만 어떤 과정을 거쳐 통신이 진행되는지 아는게 가장 중요하다. 알아보자 📌
이미지 출처 ⬆️
위 이미지처럼 각각의 계층을 거쳐 송신측과 수신측의 통신이 완성됨을 알 수 있다.
각각의 계층을 지날때마다 헤더에 각각의 계층에서 필요한 정보를 담아 전송한다. 이렇게 정보를 감싸서 보내는 것을 캡슐화라고 부른다.
반대로 수신측에서는 헤더를 하나씩 삭제하는데 이는 역캡슐화라고 부른다.
🕶 가장 많이 사용되는 HTTP 프로토콜을 예로 들어보자 🕶
클라이언트의 Application Layer에서 http://www.naver.com
이라는 페이지를 요청한다는 HTTP리퀘스트를 보낸다.
그러면 Transport Layer는 HTTP 메시지를 받아서 통신에 용이한 패킷으로 분해를 하고 일련번호와 포트번호를 추가해 Internet Layer에 전송한다.
Internet Layer에서는 수신지의 AMC 주소를 추가해서 Physical Layer에 전달한다. 이로써 네트워크 통신을 위한 준비가 완료되었고 Internet Layer는 상대가 어디에 있는지 찾아 중계해 가면서 배송해준다.
수신측의 Transport Layer는 패킷을 수신 받고 도착한 패킷의 일련번호를 보고 조립한다.
수신측의 Application Layer는 웹 서버에 대한 리퀘스트 내용을 처리하고 리퀘스트의 처리결과인 리스폰스 또한 TCP/IP 통신의 순서대로 클라이언트에 반환시켜준다.
🧳 지금까지 TCP/IP의 4계층과 통신 과정에 대해서 알아보았다. 다음 글 부터는 HTTP 프로토콜에 대해 자세히 알아봅시다 🙉