TCP/IP 입문 DAY.1

ToastEggsToast·2021년 8월 1일
0

TIL

목록 보기
13/15

누군가가 집에 사두어, 책을 읽으며 그날 그날 읽은 내용을 정리하며 복기하는 용도로 작성되는 포스트이기 때문에 전문성이 다소(많이) 떨어질 수 있습니다.
참고한 책은 TCP/IP가 보이는 그림책 입니다.
틀린 내용, 혹은 좀 더 심도있는 내용에 대해 알려주고자 하실 경우 답글로 알려주세요.
늘 감사합니다, 좋은 하루 되세요 :)

TCP/IP는 컴퓨터 네트워크를 담당하는 구조 중 하나로 여러가지 프로토콜을 조합한 것의 종류 중 하나입니다. 즉 인터넷을 사용할 수 있도록 컴퓨터 네트워크를 구현하는 통신 프로토콜 군이라고 말할 수 있을 것입니다.

통신 프로토콜이란 "컴퓨터끼리 데이터를 주고받기 위해 필요한 규칙"으로, 전 세계는 이 TCP/IP 형식의 통신 프로토콜을 통해 서로 통신을 주고 받고 있기 때문에 다른 컴퓨터, 다른 브라우저 등을 사용하고 있는 다양한 환경에서도 일정한 데이터를 수/송신 할 수 있는 것입니다.

TCP/IP란?

우리는 화면에서 사람이 읽을 수 있는 형태로 데이터를 읽어들이지만, 모두가 알다싶이 컴퓨터의 신호는 0과 1, 두 가지의 숫자로 이루어져있습니다.
우리는 어떻게 0과 1로 이루어진 데이터를 서로 송/수신할 수 있을까요?

TCP/IP에서는 데이터 송수신을 위해 5단계, 혹은 4단계의 절차를 거칩니다. 각 단계는 계층(layer)라고 불리기도 하며, 위에서부터

  1. 어플리케이션 계층
  2. 트랜스포트 계층
  3. 네트워크 계층
  4. 데이터 링크 계층
  5. 물리 계층

으로 나뉘어 있습니다. 위에서 혹은 4단계의 절차를 지낸다고 했는데, 4. 데이터 링크 계층과 5. 물리 계층을 합쳐 4단계로 보는 경우도 존재합니다.
종종
1단계에서 5단계로 내려갈수록 점점 기계(하드웨어)로 가까워집니다.

어플리케이션 계층 (Application Layer)

어플리케이션 계층에서는 어플리케이션에 맞춰 통신을 수행할 수 있도록 합니다.
어플리케이션마다 다양한 프로토콜이 존재하는데, HTTP, SMTP, POP3, FTP, TELNET, NNTP, RCP 등의 다양한 프로토콜이 존재합니다.

트랜스포트 계층 (Transport Layer)

트랜스포트 계층에서는 송신된 데이터를 수신측 어플리케이션에 확실히 전달하기 위해 작동합니다.

TCP/IP의 특징 중 하나는 '데이터를 일정 크기로 분할하여 통신한다.' 입니다.
일정 크기로 분할 된 데이터를 "패킷(Packet)"이라고 하며, 이런 식으로 패킷을 송/수신해 데이터를 주고 받는 방식을 "패킷 통신" 이라고 합니다.

패킷 통신의 장점으로는 데이터를 잘게 나누어 보내기 때문에, 하나의 회선을 사용해 여러 데이터를 송수신 할 수 있고, 일부 데이터가 손상되어도 손상된 데이터만 송/수신하면 된다 라는 점이 있습니다.

트랜스포트 계층에서는 데이터를 "패킷"의 형태로 제작하는 것에도 관여하고 있습니다. TCP, UDP 프로토콜 방식이 존재합니다.

네트워크 계층 (Network Layer)

수신측 컴퓨터까지 데이터를 전달하기 위해 작동합니다. 송수신할 컴퓨터의 주소와 수신 불명인 경우 데이터를 파기하는 표시 등을 기재합니다.

우리가 자주 들어본 IP 프로토콜 방식이 존재합니다.

네트와크에 직접 연결된 기기 간 데이터를 전송할 수 있도록 만듭니다. 네트워크 계층과 물리 계층 간의 차이를 조절하기 위한 Ethernet, FDDI, ATM, PPP, PPoE 등 다양한 프로토콜이 존재합니다.

네트워크의 종류에 맞춘 형식으로 보낼 곳의 정보 등을 써 넣습니다.

위에서 말 한 것처럼 네트워크 계층과 물리 계층 간의 차이를 조절하기 위해 데이터를 0과 1로 이루어진 형태(비트열)로 변환하는 작업을 진행합니다.

물리 계층

데이터를 신호로, 또 신호를 데이터로 변환합니다.
변환 방법은 통신 매체에 의존하고 있기 때문에 정해진 프로토콜이 없습니다.

0과 1로 이루어진 비트열을 전기 신호, 혹은 광 신호로 변환하는 작업을 진행하며, 역으로 전기/광 신호를 0과 1로 이루어진 비트열로 변환하는 작업도 진행합니다.

즉 TCP/IP는 트랜스포트 계층의 TCP 프로토콜 방식과, 네트워크 계층의 IP 프로토콜 방식이 조합된 "프로토콜의 형식"이라는 것을 알 수 있습니다.

헤더와 트레일러

송신측의 각 계층에서는 수신측의 동일한 계층에서 필요한 정보를 공통된 서식으로 데이터에 추가합니다. 데이터보다 앞에 추가하는 정보를 "헤더",뒤에 추가되는 정보를 "트레일러"라고 하는데 트레일러가 없는 경우도 존재합니다. ( => http 헤더도 여기에서 오는 헤더일까?)

즉 정리하면 "헤더-데이터-트레일러"의 순서가 되겟죠.
각 계층을 지날 때 마다 "(네트워크)헤더 - (트랜스포트)헤더 - (어플리케이션)헤더 - 데이터 - (어플리케이션)트레일러 - (트랜스포트)트레일러 - (네트워크)트레일러"와 같은 형태가 됩니다.

각 계층에 덧붙여진 헤더와 트레일러들은 다른 계층의 헤더와 트레일러에 관여할 수 없기 때문에, 계층에서 서로의 것이 아닌 헤더와 트레일러를 참조해 데이터를 분할/합성 할 일은 없습니다.

이 때문에 송신/수신 측의 서로 동일한 계층끼리만 연락을 취하는 것 처럼 보입니다.

https://slideplayer.com/slide/7493081/

위 이미지에서는 TCP/IP 레이어를 4단계로 보고 있으나, 패킷 데이터 앞뒤로 헤더/트레일러가 붙는 방식은 동일합니다.

SUMMARY

TCP/IP는 데이터를 송/수신하기 위한 여러가지 프로토콜군들 중 하나로, 세계 공용으로 채택하고 있는 프로토콜의 조합입니다.

TCP/IP는 패킷 통신이라는 데이터를 패킷 단위로 분할해 송/수신 하는 방법으로 데이터를 주고받고 있으며, 기재되어있는 헤더/트레일러를 통해 자신의 기기 앞으로 송신된 데이터만 받아 데이터를 분석, 확인할 수 있는 과정을 거치게 됩니다.

TCP/IP는 애플리케이션, 프랜스포트, 네트워크, 데이터 링크, 물리의 5계층을 통해 데이터를 송/수신하며 송신할 때에는 위에서 기재한 순서 차례대로 계층을 거치지만 역으로 수신하는 경우, 물리 계층부터 시작해 어플리케이션 계층으로 역순의 방식으로 데이터를 조합해나갑니다.

송신 측에서는 각 계층을 지나칠 때 마다 헤더, 트레일러라고 불리는 정보를 덧붙이는데, 이 헤더와 트레일러는 수신 측에서 이 데이터가 자신의 앞으로 온 데이터인지, 그리고 이 분할 된 패킷의 순서를 조합하고 어떤 프로토콜을 이용해 데이터를 수신해야하는지 알 수 있게 해줍니다.

profile
개발하는 반숙계란 / 하고싶은 공부를 합니다. 목적은 흥미입니다.

0개의 댓글