TCP/IP
<학습 전 든 생각>
1. TCP/IP란 무엇일까?
2. TCP/IP를 왜 배워야 할까? (7 계층도 있는데 왜 4 계층인가?)
3. 캡슐화, 역캡슐화
4. 헤더란? IP 헤더와 TCP 헤더는 별개의 것인가?
# 프로토콜이란
- 통신하기 위한 규약
# 프로토콜의 종류
- Http, Https, TCP, FTP, SSH 프로토콜, UDP 등
# 패킷이란
- 인터넷에서 전송되는 데이터의 기본 단위 (데이터 조각)
- 데이터를 작은 조각들로 나눠서 보내는 것이라고 생각하면 된다.
1. TCP/IP란 무엇일까?
- 패킷 교환 방식에 따라 데이터를 전송할 때 사용하는 프로토콜 (규약)
# 패킷 교환 방식이란
- 어떤 회선을 독점하는 것이 아니라 패킷별로 최적의 경로를 선택해서 패킷을 전달하는 방식
# IP (Internet Protocol)
- 인터넷 상의 주소와 같다.
- IP가 있어야 라우팅을 통해 데이터를 원하는 곳으로 보낼 수 있다.
- 패킷들을 네트워크 망을 통해서 가장 효율적으로 보내는 역할을 한다. (도로의 표지판과 같은 역할)
- 비신뢰성 - 패킷 전달 여부를 보증하지 않는다.
- 비연결지향성 - 각 패킷은 독립적으로 전달되기 때문에 보낸 순서와 받는 순서가 다를 수 있는데 IP는 이를 교정할 수 없다.
# IP 헤더
- 버전, 출발지 IP 주소, 목적지 IP 주소 등이 담겨 있다.
버전 | 헤더 길이 | 서비스 유형 | 전체 패킷 길이 |
ID (일련번호) | 조각 상태 | 조각의 위치 | |
TTL | 프로토콜 | 헤더 체크섬 | |
출발지 IP 주소 (32비트) | |||
도착지 IP 주소 (32비트) |
# IP 패킷
- IP 헤더 + 데이터 조각
Q. IP가 있는데 TCP가 생긴 이유는 뭘까?
만약 IP만 있다면 패킷들을 원하는 곳으로 효율적으로 보낼 수는 있겠지만 모든 패킷들을 온전하게 보낼 수 있다고는 할 수 없을 것입니다.
왜냐하면 IP는 패킷 전달 여부를 보증하지 않기 때문입니다. 그렇기에 TCP가 함께 쓰이는 듯합니다.
# TCP (Transmission Control Protocol)
- IP 위에서 동작하는 프로토콜
- 데이터의 전달을 보증하고 보낸 순서대로 받은 패킷을 정렬해준다.
- 패킷을 순서대로 정렬하기 때문에 손상되거나 손실된 패킷이 있다면 재전송을 요청하여 받는다.
- 연결형 통신에 사용
# TCP 헤더
- TCP로 전송할 때 붙이는 헤더
출발지 포트 번호 (16비트) | 목적지 포트 번호 (16비트) | ||
일련번호 (32비트) | |||
확인 응답 번호 (32비트) | |||
헤더 길이 (4비트) | 예약 영역 (6비트) | 코드 비트 (6비트) | 윈도우 크기 (16비트) |
체크섬 (16비트) | 긴급 포인터 (16비트) | ||
옵션 |
# 세그먼트
- TCP 헤더 + 데이터 조각
2. TCP/IP 모델 (4 계층)
이름부터 뭔가 어려워 보이고 익숙하지도 않은 계층들 때문에 학습을 시작하기 어려웠습니다..ㅎㅎ
그런데 어떤 분의 블로그를 봤는데 말씀하시길 이렇게 계층을 나눈 것은 마치 우리의 택배가 전달되는 과정을 나눠놓은 것에 비유해서 설명해주셔서 왜 나눴는지 이해하기 훨씬 쉬웠습니다.
우리는 택배를 어떤 목적지로 보내면 받는다라고만 느끼지만 실제로는 여러 단계로 나눠져 있고 이렇게 나눠져 있어서 중간에 어느 정도 진행된 건지 파악도 가능하고 분실이 되더라도 어디쯤에서 분실이 된 건지 알 수 있습니다.
이렇게 생각하니 제가 기존에 가지고 있던 OSI 표준 모델에 대한 두려움은 사라지고 이 계층들이 각각 어떤 일을 하는지 알고 싶어 졌습니다.
# TCP/IP에서 캡슐화란
- 상위 계층의 통신 프로토콜 정보를 데이터에 추가(헤더)하여 하위 계층으로 전송하는 기술
# TCP/IP에서 역캡슐화란
- 상위 계층의 통신 프로토콜에서 하위 계층에서 추가한 정보(헤더)와 데이터를 분리하는 기술
- 각 계층은 송신 호스트가 추가한 헤더의 정보를 읽고 해당 프로토콜의 기능을 실현한 후 해당 헤더를 삭제한 데이터를 상위 계층에 전달
Q. 각 계층에서 왜 헤더를 붙이는 걸까?
TCP에서 역캡슐화할 때 데이터 조각에 손실이 있다면 그 계층의 헤더를 보고 송신자의 해당 계층에 재전송을 요청하는 용도로 쓰이는 게 아닐까 싶은데 정확하진 않아서 좀 더 찾아보고 적어두겠습니다!
위의 답변이 맞다면 이것을 캡슐화와 연관 지어 생각해보면 헤더만을 봤을 때는 데이터 링크 계층을 나타내는 것은 없는데 그 역할을 트레일러가 하는 것은 아닐까?라는 생각이 들어서 찾아봤습니다.
# 헤더와 트레일러의 차이점
- 제어 정보가 앞에 붙으면 헤더, 뒤에 붙으면 트레일러
- 제어 정보란 IP 주소, 포트 번호 등이 포함되어 있는 정보
다음번에 TCP/IP의 각 계층에서는 어떤 작업들이 이루어지는 지에 대해 알아보겠습니다.
그리고 TCP의 연결형 통신과 관련된 부분은 UDP와 비교하면서 알아보겠습니다.
<참고 자료>
도서 - <모두의 네트워크>
https://better-together.tistory.com/110
쉽게 이해하는 네트워크 11. 인터넷의 TCP/IP 프로토콜과 패킷 교환 방식
패킷 교환 방식으로 데이터를 전송하는 인터넷 TCP/IP 모델의 핵심인 IP 프로토콜과 TCP 프로토콜은 전 세계에 존재하는 수만 가지의 LAN을 연결하여 인터넷을 구축하고 데이터를 전송하기 위한 규
better-together.tistory.com
https://better-together.tistory.com/89?category=887984
쉽게 이해하는 네트워크 8.인터넷의 TCP/IP 데이터 전송 과정(ft. 캡슐화와 역캡슐화)
캡슐화와 역캡슐화로 데이터를 전송하는 TCP/IP 인터넷에서 데이터를 전송하는 과정 TCP/IP를 지원하는 인터넷에 연결된 컴퓨터, 즉 호스트는 TCP/IP의 4 계층의 프로토콜을 구현하는 소프트웨어만
better-together.tistory.com