[Network] TCP/IP

zaezero·2022년 4월 18일
0

안녕하세요 제제로입니다 :)
김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식 이라는 강의를 듣고 있는데
한번 공부한 내용을 정리해보려고 합니다.
오늘 이야기할 내용은 TCP/IP 에 관한 내용입니다.
IP의 문제점과 TCP가 어떤 점을 보완해주는 지 중점적으로 봐주시면 감사하겠습니다!

인터넷 통신

만약 클라이언트에서 서버로 데이터를 전송할 때 컴퓨터가 바로 옆에 있진 않겠죠??
멀리 있는 컴퓨터로 데이터를 전송할 때 에는 수많은 노드(서버)들을 거쳐서 보내지게 됩니다.
이렇게 보낼 때 우리는 규칙을 정해놓고 보내게 되는데요 그것이 바로 자주 듣는 TCP,IP,UDP 같은 프로토콜들 입니다.

IP(인터넷 프로토콜)

IP는 각 컴퓨터에 IP주소를 부여하고 패킷이라는 통신 단위로 데이터를 전달하게 됩니다.

IP 패킷 정보


IP 패킷에는 출발지 IP주소, 도착지 IP주소 등이 담겨져 있고 전송 데이터와 같이 전송 됩니다.

IP 패킷 전달



노드로 패킷이 전달될 때 패킷의 있는 도착지IP주소를 확인하여 다음 노드로 전달 되고 결국 해당 목적지로 전달 됩니다.

IP의 문제점 및 한계

1. 비연결성

패킷이 받을 대상이 없거나 서비스 불능 상태여도 패킷이 전송 됩니다.
IP주소가 변경되거나 컴퓨터가 꺼져 있거나 등등 전달 되어질 수 없는 상태에도 패킷이 전송됩니다.

2. 비신뢰성

중간에 패킷이 사라져도 알수 없습니다.
중간에 연결된 노드에서 문제가 발생해서 패킷이 손실 되어도 보내는 입장에서는 알 수 없습니다.

패킷이 순서대로 오지 않을수도 있습니다.
만약 전송 데이터가 클 경우 패킷을 나눠서 보내게 되는 경우도 있습니다.
패킷이 두개가 전송되는 경우 1번 패킷을 보내고 2번 패킷을 보낼 때 경로가 변경 되어 2번 패킷이 먼저 도착 할 수 있습니다.

이러한 문제들 때문에 TCP를 같이 사용합니다

TCP/IP

인터넷 프로토콜 스택의 4계층

TCP/IP Protocol (4계층) 이라고 불리는 계층구조 입니다. 여기서 계층구조를 이해하기 쉽게 바꿔보면

이렇게 바꿔볼수 있습니다. 프로그램이 hello, world! 라는 메시지를 보낸다고 하면

해당 데이터를 OS계층으로 보내게 되고 TCP 계층에서 TCP정보를 데이터 위에 감쌉니다.
그리고 그 감싼 데이터를 IP 계층에 보내게 되면 IP 계층에서는 그 데이터 위에 IP와 관련된 데이터를 씌웁니다. 이렇게 해서 패킷이 생성되면 이더넷 프레임을 포함해서 네트워크 인터페이스 계층을 통해 전송되게 됩니다.

TCP/IP 패킷

TCP 정보에 해당하는 부분을 보면 PORT란것도 있고 전송 제어, 순서, 검증과 관련된 정보가 들어가 있는 것을 보니 IP의 문제점들을 보완해줄 수 있을 것 같습니다. 한번 어떻게 보완해주는 지 보도록 하겠습니다.

TCP 특징

TCP(Transmission Control Protocol), 전송 제어 프로토콜

연결 지향 - TCP 3 way handshake

3 way handshake란 데이터를 전송하기 전에 먼저 서로 연결이 잘 되어 있는 지 확인하는 과정, 방법 입니다.
과정을 보면
1. 송신자가 SYN 메시지를 보낸다.
2. SYN 메시지를 받은 수신자는 SYN+ACK 메시지를 보낸다.
3. 메시지를 받은 송신자는 수신자에게 ACK 메시지를 보낸다.
4. 데이터를 전송한다
인데 ... 이해하기 쉽게 바꿔 보겠습니다.

  1. 나 너 한테 데이터 보내고 싶어 연결(SYN)해줘
  2. 알겠어(ACK) 그럼 나도 너한테 연결(SYN)해줘
  3. 알겠어(ACK)
  4. 데이터 전송

이렇게 방식으로 진행 된다. 3번과정에서 ACK 메시지와 함께 데이터 전송도 가능하다고 합니다.
이런 연결 방식은 물리적인 연결은 아니고 논리적인 연결 방식입니다.

데이터 전달 보증

만약 클라이언트가 서버로 데이터를 전송하면 서버 측에서는 데이터를 잘 받았다는 응답을 보내줍니다.
만약 응답이 없을 시에는 데이터가 제대로 전송이 되질 않았다는 것을 알 수 있습니다.

데이터 순서 보장

만약 보낸 패킷의 순서와 받은 패킷의 순서가 다를 경우 순서가 다른 패킷부터 다시 보내달라는 응답을 보내게 됩니다.

UDP 특징

TCP의 짝궁(?) 항상 TCP 이야기 나오면 빠지지 않는 UDP에 대해서 간단히 알아보려고 합니다
UDP는 사용자 데이터그램 프로토콜(User Datagram Protocol)의 줄임말로

  • 하얀 도화지 같이 기능이 거의 없다
  • 연결 지향 x
  • 데이터 전달 보증 x
  • 순서 보장 x
  • 단순하고 빠름

라는 특징을 가지고 있습니다. 기능이 거의 없어서 IP와 유사하지만 PORT, 체크섬 정도 추가 됐습니다.
+) 체크섬 - 송신된 데이터를 검증해주는 데이터

PORT

클라이언트에서 하나의 서버에서 게임도 하고 화상통화도 한다면 전달되어지는 패킷이 어떤 애플리케이션에 해당하는 패킷인지 알 수 있을까요??
패킷의 IP주소로는 어느 서버로부터 전달되어지는 패킷인지는 알 수 있지만 어떤 프로그램인지는 알 수 없을 것 같습니다...
이 때 사용되어지는 것이 바로 PORT 입니다.

이 PORT는 TCP/IP 패킷에 존재하는 데이터 입니다.

PORT는 같은 IP 내에서 어떤 프로세스인지 구분하기 위해 사용되어집니다.


마무리

김영한님의 강의를 처음 들어봤는데 정말 이해하기 쉽고 재밌게 알려주십니다!
HTTP에 대해서 공부해야겠다라고 생각하시는 분들은 한번 들어보시는 것을 추천드립니다.
김영한님의 모든 개발자를 위한 HTTP 웹 기본 지식

감사합니다😊
건강한 지적은 언제나 환영합니다

profile
fdsafsdafsda

0개의 댓글