[HTTP] 인터넷 네트워크

홍정완·2022년 8월 27일
0

lay the ground work

목록 보기
11/18
post-thumbnail
post-custom-banner

인터넷 통신


인터넷 통신은 어떻게 이뤄지는가?


  • 클라이언트에서 다른 클라이언트(컴퓨터)로 데이터를 보낼 경우, 통신 서버와 같은 노드들을 거쳐 상대 클라이언트에 도달한다.

  • 상대 클라이언트를 찾아가는 과정을 이해하기 위해서, 우선 IP(인터넷 프로토콜)에 대해 알고 있어야 한다.



IP(인터넷 프로토콜)


IP란?

💡 송신/수신 클라이언트에서 정보를 주고받을 때 사용하는 정보 위주의 프로토콜



역할

  • 지정한 IP 주소에 데이터 전달
  • 패킷(Packet)이라는 통신 단위로 데이터를 전달한다.



IP 패킷 정보

패킷은 전송하고자 하는 데이터의 한 블록(payload)과 주소지 정보(발신지 주소, 목적지 주소), 관리 정보(Header, IPv6와 같이 망이 패킷을 목적지까지 전달하는데 필요한)로 구성된다.



클라이언트 패킷 전달

  • 좌측의 클라이언트에서 상대 클라이언트로 패킷을 전달한다.



서버 패킷 전달

  • 상대 클라이언트(우측)에서는 패킷을 받았다고 응답을 할 수 있으며, 해당 응답 패킷을 전달한다.



IP 프로토콜의 한계

1. 비연결성

  • 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷을 그냥 전송한다.

2. 비신뢰성

  • 패킷이 중간에 소실될 경우 문제가 생긴다.
  • 패킷이 순서가 보장되지 않는다.

3. 프로그램 구분

  • 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 여러 개일 경우 어떻게 구분하는가?
  • Ex : 한 컴퓨터에서 게임을 하는데 카카오톡을 켜놓은 상태이다.



TCP, UDP


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


설명
애플리케이션 계층 - HTTP, FTP무엇인가 비즈니스 로직 혹은 특정 제품을 만들어내는지에 따라
탄생하는 데이터 전송에 대한 약속(규칙) 계층
전송 계층 - TCP, UDP물리적으로 연결하고, 경로를 지정했으면 이제 데이터를 전송해야 하는데,
데이터를 전송하는 방법을 정의하는 계층
인터넷 계층 - IP방대한 인터넷 계층에서 어디로 보낼지 경로를 선택하는 것이 IP 계층이다
이 자체로는 비연결 지향적이며 신뢰성이 없고 데이터를 전송한 이후
발생하는 문제에 대해서는 신경 쓰지 않는다
네트워크 인터페이스 계층물리적인 영역을 표준화하는 계층으로
실제로 랜선을 꼽는 랜카드나 랜카드 드라이버 등이 이에 속한다



프로토콜 계층



TCP/IP패킷 정보

  • 기존 IP 패킷 정보의 한계인 비신뢰성비연결성을 TCP 정보를 추가함으로써 한계를 극복했다.



TCP 특징

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


  • 연결 지향 - TCP 3 way handshake (가상 연결)
1. SYN(Synchronizer) 접속 요청 메시지 전송
2. SYN + ACK 요청 수락
3. ACK (with 데이터 전송 가능)

💡 이 상태에서는 개념적으로 연결된 것으로 그 사이의 수많은 노드들과의 연결이 되었는지는 알 수 없다.



  • 데이터 전달 보증
  • 클라이언트에서 데이터를 전송하면 서버에서 데이터가 잘 왔는지에 대한 응답을 해서
    데이터 전달을 보증한다.



  • 순서 보장
  • 패킷의 순서가 잘못 도착했을 경우 잘못 전송된 패킷을 기준으로 다시 보내라고 요청을 한다.

    • 패킷 데이터의 순서 보장
  • TCP 정보에 PORT부터 순서와 같은 정보들이 포함되어 있기에 가능하다.


  • 신뢰할 수 있는 프로토콜
  • 현재 대부분이 TCP를 사용한다.



UDP 특징


💡 사용자 데이터그램 프로토콜(User Datagram Protocol)


  • TCP에 비교해 기능이 거의 없다.
  • 연결 지향 - TCP 3 way handshake ❌, 데이터 전달 보증 ❌, 순서 보장
  • 몹시 단순하기에 속도가 빠르다.
  • IP와 거의 유사하지만 PORT 정보, 체크섬 추가
  • 애플리케이션에서 추가적인 작업이 필요하다.



PORT


해당 IP에 도착하여 서버를 만났을 때, 돌아가고 있는 애플리케이션이 2개 이상이라면
어떤 애플리케이션에 데이터를 전송해야 할까 ❓


IP를 아파트, PORT를 호수로 비유하면 이해가 쉽다.


위에서 봤던 패킷 정보인데,
TCP(혹은 UDP) 라면 출발지와 목적지의 IP뿐 아니라 PORT 정보도 담겨있는 걸 볼 수 있다.



PORT - 같은 IP 내에서 프로세스 구분


포트는 어떻게 작성해야 할까?

  • 0 ~ 65535 할당 가능
  • 0 ~ 1023: 잘 알려진 포트이기에 사용하지 않는 것을 추천
    • FTP - 20, 21
    • TELNET - 23
    • HTTP - 80
    • HTTPS - 443



DNS


인터넷 통신을 위해 IP(with PORT)가 필요하다고 했는데, 이 IP에는 몇 가지 단점이 있다.

  1. 가독성이 떨어지고 외우기 힘들다.
    : 200.200.200.1, 혹은 174.254.162.74 이런 식의 아이피는 가독성이 떨어진다.

  2. IP는 변경될 수 있다.
    : 200.200.200.1로 주소를 기억하고 있는데, 변경돼서 200.200.200.3이 된다면 대응하는 게 까다롭다.


DNS란?

💡 도메인 네임 시스템(Domain Name System)

  • 일종의 전화번호부와 같으며 도메인 명을 IP 주소로 변환한다.

profile
습관이 전부다.
post-custom-banner

0개의 댓글