[네트워크] 인터넷 네트워크에 대하여

Shelby Choi·2023년 7월 21일

CS

목록 보기
1/5

모든 개발자를 위한 HTTP 웹 기본 지식 - 김영한 | 섹션1

📌 인터넷 통신

  • 클라이언트와 서버가 케이블로 연결되어있으면, 바로 메시지를 주고받으면 된다.
  • 그런데 중간매체로 인터넷이 껴있으면, 인터넷망 상의 수많은 노드를 거쳐 목적지로 보내야한다. 이를 위해 사용하는 것이 IP.

📌 IP(인터넷 프로토콜)

  • 서버와 클라이언트 각각에는 고유의 IP주소가 있다.
  • IP의 역할
    - 지정한 IP 주소에 데이터 전달
    • 패킷이라는 통신 단위로 데이터 전달

패킷이란?

  • 서버와 클라이언트가 정보를 주고 받기 위한 단위
  • 패킷에 저장되어있는 정보: 출발지 IP | 목적지 IP | 기타... | 전송 데이터
  • 노드에서 노드로 패킷을 보내면서 최종 목적지에 도달한다.
  • 목적지 또한 잘받았다는 응답을 패킷으로 보낸다. 이때의 경로와

IP 프로토콜의 한계

  • 비연결성 패킷을 받을 대상이 없는데도 패킷이 전송될 수 있음
  • 비신뢰성 패킷 소실이나 패킷 전달 순서 문제 발생
  • 프로그램 구분 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상일 수 있음

=> 이러한 문제를 해결하기 위해 등장한 것이 바로 TCP!

📌 TCP, UDP

  • IP의 문제를 그 위 계층인 TCP가 보완해줌
  • APPlication Layer에서 프로그램이 Hello, world! 메시지 생성 -> 라이브러리를 통해 OS Layer의 TCP에게 전달 -> TCP 정보 생성 -> TCP 데이터를 포함한 IP 패킷 생성 -> 네트워크 인터페이스 Layer의 LAN 장비를 통해 서버에 전달

TCP 특징

  • IP 패킷 { TCP 세그먼트 { 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보 등 { 전송 데이터 } } }
  • 이렇게 해서 보내기 때문에 전송 제어 문제 등이 해결 되기 때문에 전송 제어 프로토콜(Transmission Control Protocol) 이라고 한다!
  • 현재는 대부분의 애플리케이션에서 TCP를 사용한다

TCP의 연결 지향성: 3 way handshake

  1. 클라이언트에서 서버로 SYN(접속 요청)을 보낸다.
    1. 서버에서 클라이언트로 SYN+ACK(요청 수락)으로 응답한다.
    2. 마지막으로, 클라이언트 또한 서버에 ACK를 보냄으로써 연결이 완성된다.
  • 1~3 way를 모두 성공해야 비로소 데이터 전송 가능.
  • But 가상적인 연결이지 진짜 실질적인 연결을 의미하는 것은 아님! 그 사이에 수많은 노드들이 있음을 잊어서는 안됨.

순서 보장

  • 클라이언트에서 패킷1, 2, 3의 순서대로 보냈음에도 서버에는 1, 3, 2의 순서대로 도착했다면, 서버는 클라이언트에 패킷2부터 다시 보낼 것을 요청한다.

UDP

  • 사용자 데이터 그램 프로토콜
  • TCP와 같은 계층에 속하지만, 기능이 거의 없음
  • IP와 오히려 더 비슷함. 다만, PORT 체크섬이 추가 됨.
  • 하나의 IP에서 여러 Application 요청을 보낼 경우, UDP로 구분함.
  • TCP는 더이상 최적화 불가능. UDP는 커스텀할 수 있는 하얀 도화지로 생각하면 됨.
  • 최근에는 UDP가 뜨고 있음. HTTP3는 UDP를 사용한 최적화를 노리고 있음

📌 PORT

  • 예를들어, 내 PC에서 게임도 하고 있고, 화상통화도 하고 있다면? 응답으로 오는 패킷들이 게임에 대한 응답 패킷인지, 화상통화에 대한 응답 패킷인지 알 수가 없음.
  • 패킷에는 IP도 있고 PORT도 있는데, 전자는 목적지를 구분할 때 쓰이고, 후자는 같은 목적지 내에서도 프로세스를 구분할 때 쓰인다. (IP는 아파트, PORT는 몇동 몇호!)
  • 0 ~ 1023까지는 잘 알려진 포트이므로 사용하지 않는 것이 좋음
    - FTP 20, 21
    • TELNET 23
    • HTTP 80
    • HTTPS 443

📌 DNS

  • IP의 단점: 기억하기 어렵고, 바뀔 가능성이 있다.
  • DNS(도메인 네임 시스템)을 통해 도메인 네임을 사서 등록하면, DNS 서버에 IP주소 별칭을 등록할 수 있다.
profile
React를 애정하는 FE 개발자

0개의 댓글