| 데이터 전송 프로토콜(TCP/IP)
페이지 정보
작성자 최고관리자 작성일23-04-05 12:05 조회13,384회 댓글0건본문
이번 글은 인터넷 프로토콜 스위트가 무엇인지 간단하게 알아보고 그 안에 속해있는 TCP/IP, HTTP가 무엇인지 설명하는 글입니다.
인터넷 프로토콜 스위트를 글 하나에 모두 설명하는건 불가능한 일이라 간단한 개념 정도만 적고 TCP/IP와 HTTP가 무엇인지 파악하는걸 중점으로 진행 하겠습니다.
인터넷 프로토콜 스위트(Internet Protocol Suite)
인터넷 프로토콜 스위트는 인터넷에서 컴퓨터들이 서로 정보를 주고받는 데 쓰이는 통신규약의 모음입니다.
인터넷 프로토콜 스위트는 보통 4계층으로 나뉘며 각 계층 당 각자의
통신 규약 방식이 존재합니다. 여기서 3계층의 IP, 그 위 4계층의 TCP 통신
규약 방식이 가장 흔하게 쓰여 TCP/IP 프로토콜이라고도 부릅니다.
각 계층의 역할은 계층에 속한 통신규약 중 하나의 통신 규약을 사용하겠다는 의미이며 위 계층으로 올라가며 각
계층의 규약을 선택하는 방식입니다.
5 |
DNS, TFTP, TLS/SSL, FTP, HTTP, IMAP,
IRC, NNTP, POP3, SIP,
SMTP, SNMP, SSH, 텔넷, ECHO, 비트토렌트, RTP, PNRP, rlogin, ENRP, … |
|
4 |
||
3 |
||
2.5 |
||
1,2 |
3계층 IP
TCP/IP는 전세계의 네트워크를 사용하는 통신 규약입니다. 그리고 3계층의 IP는
네트워크 주소를 나타내는데, 전세계에서 중복되지 않는 유일한 숫자입니다. 그래서 이 주소를 알면 정보를 전달할 수 있습니다.
이해를 위한 예시를
들어보겠습니다.
친구에게 물건을 택배로 전달해 보겠습니다. 택배를 보내기 위해서는 보내는 사람의 주소와 받는 사람의 주소가 필요합니다. 보낼 물건을 박스에 포장하고 송장에 두 사람의 주소를 적은 후 택배사로 전달합니다.
네트워크 상에서는 택배사의 역할을 하는게 ISP회사(통신사)입니다. 통신사에서
회선을 임대한 후 IP 주소를 할당받아 정보를 전달하거나 수신할 수 있습니다.
이렇게 각자의 고유 번호를 할당받아 중복되지 않게 처리하는 IP가 3계층에 속합니다.
4계층 TCP
TCP는 IP주소 체계를
따를 때 정보를 전달하는 과정에서 전달되는 정보의 안정성을 위한 프로토콜입니다.
IP가 각자의 고유 주소를 할당하여 특정한 목적지(Endpoint)를 찾아갈 수 있도록 하는 역할이지만 전달하는 정보의 순서나 안정성 혹은 정상적으로 전달되었는지
확인할 수는 없습니다.
이 때 TCP가 이런 순서, 안정성, 정상전달 등을 꼼꼼하게 체크합니다. 양쪽 EndPoint가 서로 통신할 준비가 되었는지, 데이터가 제대로 전송되었는지, 데이터가 가는 도중 변질되지는 않았는지, 수신자가 전송된 데이터를
빠진 부분이 없이 받았는지 점검하고 그 상태를 TCP 헤더에 알려줍니다.
그리고 택배로 비교를 했을 때 Hub 역할을 하는 포트(Port)를 이용하여 연결합니다. 서울에서 부산에 도착하는 택배는
중간에 모든 택배가 모이는 Hub로 모엿다가 이 택배가 상행인지 하행인지 분류 후 다시 출발하게 됩니다. 이런 Port가 있어야 데이터가 정상적으로 전달되는 것입니다.
TCP/IP 동작방법
TCP를 사용하는 송수신자는 데이터를 전송하기 전 서로 통신이 가능한지
의사를 묻고 한번에 어느정도의 데이터를 받을수 있는지 확인합니다.
위 이미지를 생각해보면 이해가 잘 되실겁니다. 이걸 실제 TCP 통신이 어떻게 의도를 전달하는지 아래 이미지를 보시면 됩니다.
이런 방식을 3-Way Handshake 라고 합니다. TCP로 이루어지는 통신은 반드시 이 단계를 통해 시작합니다. 그리고 데이터 전달이 시작되고 데이터를 전달 받은쪽은 무사히 받았다는 의미의 ACK를 보내게 됩니다.
이런 SYN, ACK 같은 데이터를 플래그라고 부릅니다. 주로 사용하는 플래그는 RST, FIN, FIN/ACK, PUSH 등이
있습니다.
5계층 HTTP
HTTP(HyperText Transper Protocol)는 웹상에서
정보를 주고받을 수 있는 프로토콜입니다. 주로 전송하는 데이터는 HTML
형식이며 TCP 혹은 UDP를 사용합니다.
아래 계층의 TCP의 경우는 데이터를 안전하게 전송하는 방법을 위한
규약이라면 HTTP는 현재 보내는 데이터가 HTML 형식이라는것을
알리기 위한 규약이라고 이해하시면 됩니다.
그런데 사람들이 보는 문장은 사실 사람이 보기 편하도록 가공한 형식이고 실제 컴퓨터는 0, 1 로만 이루어진 이진법을 사용하여 통신합니다.
그렇다면 어떻게 데이터가 HTML 형식이라는 사실을 전달할 수 있을까요?
5계층의 통신 규약은 모두 이런 점을 생각하여 전달하는 데이터의 제일
처음에 이 데이터가 어떤 규약을 지키는지에 대한 내용을 기술합니다.
그러면 요청을 받는쪽에서는 0, 1로만 이루어진 데이터를 읽어내는
과정에서 첫줄의 내용이 HTTP 라면 다시 응답을 할 때도 똑 같은 형식으로 보내 줍니다.
실제로 HTTP 문서의 앞에는 어떠한 데이터라도 상관없이 다음과 같은
내용이 기술되어 있습니다.
HTTP/1.1 200 OK
이렇게 첫줄에 HTTP/버전 응답코드 응답상태 를 순서대로 적도록 약속이 되어 있는 것이 바로 HTTP 입니다.
만약 이런 약속을 지키지 않으면 어떻게 될까요?
클라이언트와 서버를 구축할 때 서로 이렇게 주고받겠다고 약속된 형식을 한쪽에서 지키지 않으면 반대쪽에서는 전달된
형식이 어떠한 규약인지 모르기 때문에 모든 데이터가 제 역할을 하지 못합니다.
어느정도 HTTP에 대한 내용이 감이 잡히시나요? 그럼 HTTPS에 대해서도 설명 드리겠습니다.
HTTPS도 HTTP와
동일한 계층이며 동일한 규약으로 이루어져 있습니다. 하지만 한가지가 다릅니다. 보안 인증서(SSL)가 적용되었는지 아닌지에 따라 Security 라는 뜻의 S가 뒤에 붙게 됩니다.
HTTP로 데이터를 전송하게 되면 해커 등이 세션에 접속하여 전송하는 데이터를 보거나 가로챌 수 있습니다.
그래서 SSL 인증서를 서버측에 설치하여 전송되는 데이터에 보안을 적용할 수 있습니다.
SSL에 대한 설명은 아래 링크를 통해 확인할 수 있습니다.
이 글에서 설명하지 못한 많은 통신 규약이 있습니다.
하지만 하나의 게시글로 모든 규약에 대한 설명을 하기는 불가능하여 이 글에서는 가장 많이 쓰이고 가장 많이 들었을만한 내용들로만 정리했습니다.
글 읽어 주셔서 감사합니다.