인터넷을 포함하여 일반적으로 사용하고 있는 네트워크는 TCP/IP라는 프로토콜 안에서 움직이고 있다. 여기서 프로토콜은 네트워크를 할 때에 지켜야 할 규칙이나 규약, 약속을 지칭한다. 서로 통신을 하는데에 쓰는 언어와 데이터 전송방식이 다르면 통신이 불가능하니까. 이것을 미리 규칙으로 정하고 활용함으로서 통신이 원할하게 이루어질 수 있게 하는 수단으로 쓰는 것이다. 프로토콜은 케이블 규격, IP 주소 지정방법, 수신자를 찾기 위한 방법, 웹을 표시하기 위한 순서 등 통신에 필요한 모든 요소에 적용되어 있다.
여기서 인터넷을 인터넷과 관련된 프로토콜들을 모은 것을 TCP/IP
라고 한다.
TIP/IP 에는 계층(Layer)
라는 개념이 있다. 중요한 개념이니 단계적으로 살펴보도록 하자.
제일 위의 애플리케이션 계층으로 시작해서 프랜스포트 계층
, 네트워크 계층
, 데이터링크 계층
으로 나눌 수 있다. 각 계층을 거칠 때는 반드시 헤더로 불려지는 해당 계층마다 필요한 정보를 추가한다.
반대로, 수신측에서는 각 계층을 올라갈때마다 해당 계층의 헤더가 하나씩 삭제된다.
애플리케이션 계층
유저에게 제공되는 응용프로그램에서 사용하는 통신의 움직임을 결정한다. 유저와 가장 가까운 계층으로, 서비스를 제공하는 계층이라고 할 수 있다. 예로 들어 이메일 전송이나, 웹서비스 등이 있다.
트랜스포트 계층
네트워크로 접속되어 있는 컴퓨터들 사이의 데이터의 흐름을 제공한다. 애플리케이션에서 받은 리퀘스트 데이터를 보내기 쉽게 조각내어 안내번호, 포트번호를 붙여 네트워크 계층에 전달한다. 이때 조각낸 데이터를 패킷이라고 부른다.
네트워크 계층
네트워크 상에서 패킷의 이동을 다룬다. 어떤 경로를 거쳐 상대방 컴퓨터에게 패킷을 전송할지 결정한다.
수신자의 MAC 주소를 추가해서 데이터링크 계층에 전달한다.
IPv4, IPv6, ICMP
데이트링크 계층
하드웨어를 통해 데이터를 전달하는 계층이다.
네트워크 계층에 해당하는 프로토콜이다. IP의 핵심역할은 개개의 패킷을 상대방에게 전달하는 것이다. 어떤 경로로 전달을 해야할까? 라는 의문을 해결하기 위해 IP주소와 MAC주소 라는 요소가 필요하다.
MAC주소는 송신자의 데이터가 수신자에게 전달될 수 있도록 경로상의 곳곳에 위치한 라우터의 주소다.
IP주소는 우선 수신자의 IP주소를 토대로 어느 방향으로 갈지 결정하는 것이라면, MAC주소는 물류시스템상의 지역 허브와 같다. 다음으로 보낼 허브의 목적지만 알 뿐, 최종 목적지는 알지 못한다. 데이터가 통신될수 있도록 중간 역할을 하는 것이다. 이 때 ARP 프로토콜을 통해 수신자의 IP주소를 바탕으로 한 MAC 주소를 알아낼 수 있다. 송신측에서 ARP 프로토콜을 통해 가까이 있는 라우터의 MAC주소를 알아 낸 뒤 도착하면, 다음 라우터의 MAC주소를 다시 알아내어 이동하는 방방식이다.
트랜스포트 계층에 해당하는 프로토콜이다. 바이트스트림 서비스를 통해 용량이 큰 데이터를 TCP 세그먼트라고 불리는 단위의 패킷으로 조각내어 관리한다. TCP의 특징 중 하나는 신뢰성을 바탕으로 수신자와 통신을 한다는 것인데, 수신자와의 연결을 확인 한 후에 데이터를 전송하는 연결지향적인 프로토콜이다. 그리고 수신자에게 데이터를 보낸 후에 데이터가 정확히 전달 되었는지 재차 확인을 한다. 이 방식을 쓰리웨이 핸드셰이킹 이라고 한다. 송신측에서는 데이터를 전송할 때 SYN플래그로 수신자에게 접속함과 동시에 데이터를 전송한다. 데이터를 받은 수신측은 SYN/ACK플래그로 데이터 수신사실을 송신자에게 전달하고, 마지막으로 송신자 측에서 ACK플래그를 보내 데이터교환이 완료된다.
TCP는 이렇게 신뢰성을 바탕으로 하는 프로토콜로, 속도지향적인 UDP와 달리 안정적으로 데이터를 송수신한다.
참고 : 그림으로 배우는 HTTP & Network Basic