네트워크 지식 정리 #1 (IP, PORT, TCP, UDP)

Jang Dong Ik·2024년 8월 21일
post-thumbnail

네트워크 공부 이유

최근 들어 배포, CI CD, 그리고 서버 구축 작업을 진행하면서, 네트워크에 대한 지식이 부족하다는 것을 절실히 느꼈습니다. 이 분야에서 제대로 된 시스템을 구축하고 운영하려면, 네트워크 지식이 단단해야 한다고 느꼈습니다.😢

예를 들어, 서버를 구축할 때 네트워크 설정이 제대로 되어 있지 않으면, 아무리 코드가 완벽하더라도 서비스가 원활하게 동작하지 않을 수 있습니다. 또한, CI/CD 파이프라인을 설정할 때도 네트워크 지식이 부족하면, 배포 과정에서 발생하는 문제를 해결하는 데 어려움을 겪을 수 있습니다.

이런 경험을 통해, 네트워크의 중요성을 다시 한 번 깨닫게 되었습니다. 그래서 네트워크에 대해 본격적으로 공부하기로 결심했습니다. 널널한개발자 김영한의 HTTP 수업을 통해 네트워크 공부를 진행하고 있습니다.


네트워크란?

네트워크란 관계이고 네트워킹이란 상호작용을 하는 것입니다.


IP 주소의 역할

IP 주소는 데이터를 패킷 형태로 하여 지정IP로 데이터를 전달합니다.

데이터를 전송하기 위해서는 나의 IP 주소와 수신자의 IP 주소를 모두 알아야 합니다. 데이터는 정확한 경로를 따라 이동하며, 원하는 목적지에 도착하게 됩니다.

그러나 아래와 같은 문제점이 있습니다.

  • 연결이 안되어있어도 데이터를 전송
  • 데이터의 순서가 뒤바뀌는 문제

이러한 문제를 TCP와 UDP가 해결해줍니다.


TCP의 역할

TCP의 역할은 전송을 제어합니다.

TCP데이터 전달 보증을 하기에 데이터 순서를 보장해줍니다. 만약 A, B, C의 데이터를 전송하다가 C에서 문제가 발생했다면 C부터 다시 전송을 합니다.

또한 3 handshake 방식을 통해 연결지향의 특징을 가졌습니다.

하지만 최근에는 속도의 중요성이 커지면서, UDP(User Datagram Protocol)가 다시 각광을 받고 있습니다. UDP비연결형 프로토콜로, 데이터를 보내는 과정에서 연결을 설정하지 않고, 오류 검출이나 재전송 메커니즘이 없어 훨씬 빠르게 데이터를 전송할 수 있습니다. 이는 실시간 스트리밍, 온라인 게임, VoIP(Voice over IP)와 같은 애플리케이션에서 특히 유용합니다. 이러한 상황에서는 몇 개의 데이터 패킷이 손실되더라도 전체적인 사용자 경험에 큰 영향을 미치지 않기 때문에, 속도가 더 중요한 요소로 작용합니다.


UDP의 역할

TCP가 친절하다면 UDP는 불친절

TCP와 UDP를 좀 더 쉽게 이해하기 위해 비유를 들어보겠습니다. TCP는 데이터를 전송할 때마다 "이 데이터 잘 받았니? 혹시 못 받았다면 다시 보낼게!" 라고 묻습니다. 이를 통해 데이터가 정확하게 전달되었는지 철저히 확인합니다.

반면에 UDP는 데이터를 전송할 때, "데이터 받든 말든 나는 그냥 보낼게." 라는 식으로 굉장히 빠르고 단순하게 처리합니다. 전달된 데이터가 제대로 도착했는지 확인하지 않고, 그저 빠르게 전달하는 것에만 집중합니다. 따라서 데이터가 중간에 유실되거나 손상될 가능성도 있습니다.

UDP와 IP는 무엇이 다르지?

UDP와 IP의 차이는 없는 것 같습니다. 무엇이 다를까요?

port와 checksum

port로 프로그램을 구분하고 checksum을 통해 데이터의 무결성을 체크합니다.


PORT의 역할

IP가 아파트라면 port는 상세한 주소 (동호수) 입니다.

네트워크를 통해 데이터를 주고받을 때, 단순히 IP 주소만으로는 특정 애플리케이션을 구분할 수 없습니다. 여러 애플리케이션이 동일한 IP 주소를 공유할 수 있기 때문입니다. 이때, 포트 번호가 사용됩니다. 포트 번호는 0부터 65535까지의 범위를 가지며, 특정 애플리케이션이나 서비스가 사용하는 포트를 지정하여 데이터를 전송하게 됩니다.


0개의 댓글