웹 브라우저는 ‘패킷’을 이용하여 데이터를 주고받는다.
‘패킷’은 데이터의 작은 조각이다.
컴퓨터끼리는 데이터를 어떻게 주고받을까?
데이터를 하나의 택배라고 생각했을 때, 컴퓨터는 데이터 택배를 한 번에 전송하지 않는다.
그 이유는,
어떤 데이터 용량이 굉장히 큰 경우, 데이터르 한 번에 전송하면 네트워크 대역폭을 그 데이터가 독점하여 차지하기 때문에 정체현상이 발생할 수 있기 때문이다.
또한, 큰 데이터를 한 번에 보내면 잘못된 데이터가 중간에 끼여있을 경우 전체 데이터 전송이 오류가 나서 처음부터 다시 전송작업을 해야하는 상황이 발생할 수 있지만, 데이터를 쪼개고 순차적으로 발송할 경우 문제가 생겼을 때 문제가 발생한 패킷에서부터 다시 전송작업을 하면 되므로 효율적이기 때문이다.
따라서, 컴퓨터는 데이터를 작은 조각들로 쪼개서 네트워크로 흘려보내는데,
이 작은 조각들을 패킷(Packet)이라 한다.
예를들어 10MB짜리 데이터를 네트워크로 흘려보낼 때,
1MB짜리 10개로 패킷을 나누어 네트워크로 흘려보내는 것이다.
패킷을 택배로 생각한다면, 패킷에는 당연하게도 다음과 같은 정보가 담겨야 한다.
즉, 패킷은 송신지 주소, 수신자 주소, 데이터 등을 ‘캡슐화’한 작은 데이터 조각이라 할 수 있다.
패킷은 [Header + 데이터(페이로드) + footer]로 구성된다.
헤더에 송신자, 수신자, 경로, 데이터 특징 등의 부가 정보가 담기며, 데이터 부분에 실제 전송하려는 데이터의 조각이 담긴다.
패킷 분석에 흔히 사용되는 툴은 wireshark이며, 해당 툴로 패킷의 내용을 들여다볼 수 있다.
교보문고 사이트를 접속했을 때(https가 아니라 http이다), 다수의 패킷들 중 다음과 같은 패킷 내용을 확인할 수 있다.
맨 위 패킷 내용을 보면,
Source : IP주소 211.189.37.30 가 송신자임을 알 수 있다 –> 해당 IP주소는 교보문고 웹사이트 IP주소로, 최초 송신자가 교보문고 웹서버 사이트임을 알 수 있다.
Destination : 192.168.123.102가 수신자임을 알 수 있다 –> 현재 내 컴퓨터의 IPv4 주소를 나타낸다.
Protocal : 통신 방법으로 HTTP프로토콜이 사용되었음을 알 수 있다.
Length : 해당 패킷의 1443 byte로 표현되었음을 뜻한다 –> 해당 패킷의 크기
Info : 해당 패킷이 HTTP 1.1버전(표준)으로 통신되었음을 뜻하며, text/html 데이터를 요청한 통신결과 200 OK 의 response code를 수신하였음을 의미한다.
참고 : The HTTP
200 OK
success status response code indicates that the request has succeeded. A 200 response is cacheable by default.
보다시피 패킷 하나에는 송신자, 수신자, 프로토콜 내용, 데이터 길이, 기타 정보 등이 담겨있다.
따라서,
패킷은 각 네트워크 계층 프로토콜의 조합으로 구성되어있다.
패킷은 위 과정처럼 캡슐화과정을 거쳐서 완성된다.
즉, 패킷은 각각의 네트워크 계층의 프로토콜이 헤더로 붙은 결과물이라고 할 수 있다.
그렇데면 네트워크 계층, 프로토콜이란 무엇일까?
다음 포스팅에서 프로토콜과 네트워크 계층에 대한 내용을 공부해보도록 하자.