[네트워크 스터디] 인터넷 패킷 전달

devAnderson·2022년 8월 24일
0

스터디

목록 보기
1/2
post-thumbnail

IP (인터넷 프로토콜)

인터넷은 복잡한 네트워크망을 통해서 상대방의 컴퓨터에 http 요청을 전달해야 한다.

클라이언트나 상대방 컴퓨터나 둘 다 IP라고 하는 프로토콜을 가지고 있다. 이 address는 각 컴퓨터의 고유 주소에 해당한다.

메세지를 보낼 때에는 IP 패킷이라고 하는 데이터를 상대방의 IP 까지 각 노드들을 통해서 전달을 하게 된다.

단, IP 만으로는 한계점이 존재한다

1. 비연결성 => 상대 컴퓨터가 존재하지 않는데도 패킷을 전송할 수 있다

2. 비신뢰성 => 중간에 패킷이 소실되거나 순서대로 오지 않을 경우 문제점이 생길 수 있다 (전달해야 할 데이터가 많을 경우, 해당 데이터를 분할하여 전달하게 된다)

3. 프로그램 구분 => 만약 같은 IP를 사용하는 서버에서 통신하는 어플리케이션이 둘 이상이면 어떻게 되는 건가 (한 컴퓨터에서 여러 어플리케이션을 돌리고 있는 경우)

해당 한계점을 해결하기 위해 TCP/UDP 방식이 생겨나게 되었다.


TCP/UDP

TCP는 IP패킷이 가지고 있는 비연결성과 비신뢰성과 같은 문제를 해결하기 위해 필요한 데이터를 더 추가하여 감싸는 구조로 되어 있다.

해당 내용에는

  • 출발지 Port
  • 목적지 Port
  • 전송제어, 순서, 검증정보 등

이 들어가게 된다.

TCP는 전송을 할 때 3 handshake를 통해서 연결이 되어있는지 안되있는지를 확인한다.(비연결성에 대한 문제를 해결한다)

TCP는 전송을 할 때 데이터를 보낸 것에 대해 누락된 부분이 있다면 검증부를 통해서 다시 재전송을 할 수 있는 기능을 가지고 있다.

TCP는 각 세그먼트들의 순서들을 기록하기 때문에 해당 데이터들의 결합 순서를 제대로 확인할 수 있다.(비신뢰성 해결)


UDP 연결은 TCP와 같이 세그먼트 내에 무수한 정보들이 들어가지 않고, 해당 내용들을 커스터마이징할 수 있다는 장점이 있다.

기본적으로는 Port, 검증을 위한 체크섬 정보만 들어가기 때문에, 해당 데이터가 정확하게 어느 프로세스에게 들어가야 하는지를 확인할 수 있다. 따라서 TCP와 다르게 검증 단계를 갖지 않기 떄문에 속도가 매우 빠르다는 장점을 가지고 있다. 보통 스트리밍과 같은 실시간 데이터 전송 구조에서 해당 구조를 사용할 때에 유리하다.


DNS

해당 IP 주소만으로 어떤 컴퓨터에 접근하기에는 무리가 많다.

해당 접근할 IP 에 대해서 DNS resolver 서버들을 계속 통과하면서 루트 url에 접근하기 전까지 계속해서 요청을 하는데 "recursive query"를 실행하면서 해당 IP 주소에 연결되어 있는 ip 주소를 찾는다.

그 주소를 찾게 된다면 그 이후 TCP 연결을 진행하게 된다.

profile
자라나라 프론트엔드 개발새싹!

0개의 댓글