인터넷 네트워크

jeongwon yun·2023년 3월 8일
0

Http

목록 보기
1/8

인터넷 통신

클라이언트가 서버와 통신을 하려면 인터넷 즉, IP(인터넷 프로토콜)이 필요하다.

클라이언트 IP: 100.100.100.1 => 서버 IP: 200.200.200.2

클라이언트인 내가 서버로 메시지를 보내보자.

IP 역할

  • 대상 IP 주소에 데이터 전달
  • 패킷(packet)이라는 통신 단위로 데이터 전달

패킷 정보에는 나의 IP, 서버 IP, 메시지 내용 등을 담는다.

인터넷에 있는 노드들이 이 패킷을 주고받으면서 해당 서버를 찾아 전달한다.

서버도 마친가지로 패킷에 서버 IP, 나의 IP, 'OK'라는 메시지 등을 담고

인터넷 노드들이 이 패킷을 주고받으면서 나의 IP를 찾아 전달한다.

인터넷 망이 복잡하니, 나 => 서버서버 => 나 과정이 다를 수 있다.


IP 한계

  • 비연결성

    • 패킷을 받을 대상이 없을 때에도 패킷 전송
    • 서비스 불능 상태여도 패킷 전송
  • 비신뢰성

    • 중간에 패킷이 사라지면?
    • 패킷이 순서대로 안오면?
  • 프로그램 구분

    • 같은 IP를 사용하는 서버에서 통신하는 앱이 둘 이상이면?
      (ex. 게임하면서 음악도 듣는 경우, 어떻게 구분하지?)

위 문제를 해결한 것이 TCP이다.


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

  • 애플리케이션 계층 HTTP, FTP
  • 전송 계층 - TCP, UDP
  • 인터넷 계층 - IP
  • 네트워크 인터페이스 계층

내가 서버에 Hello, world! 메시지를 보내보자.

HTTP 패킷에 TCP 패킷을 감싸고 IP 패킷을 감싸고
(Ethernet frame 패킷을 감싸고)
서버에 전달한다.

패킷은 패키지와 버킷의 합성어이다. => 수화물 덩어리(?)

TCP 패킷에는 출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보 등이 들어가서 IP 한계를 해결할 수 있다.


TCP (Transmission Control Protocol) 특징

전송 제어 프로토콜

연결지향

SYN: 접속 요청
ACK: 요청 수락

  1. 클라이언트가 접속 요청을 서버에 보낸다.
  2. 서버는 수락과 함께 접속 요청을 클라이언트에 보낸다.
  3. 클라이언트가 수락을 서버에 보낸다.
  4. 이후 데이터를 전송할 수 있다.

이렇게 해서 클라이언트와 서버가 서로 믿을 수 있다.

즉, 서버가 꺼져있는 상태에서 클라이언트가 접속 요청을 보냈고

서버는 수락과 함께 응답을 받을 수 없기 때문에 연결이 안됐고

데이터를 전송하지 않는다.

요즘은 최적화되어서 3과 4을 같이 한다.

이 연결은 진짜 연결이 된 것이 아니다.

물리적으로 연결이 된 것이 아니라 논리적으로(개념적으로)만 연결이 된 것이다.

데이터 전달 보증

클라이언트가 데이터를 서버에 보내면 잘 받았다는 응답을 해준다.

순서 보장

클라이언트 - 서버

  1. 패킷1, 패킷2, 패킷3 순서로 전송 (클라이언트 => 서버)
  2. 패킷1, 패킷3, 패킷2 순서로 잘못 도착
  3. 패킷2 부터 다시 보내 전송 (서버 => 클라이언트)

UDP (User Datagram Protocol) 특징

  • 하얀 도화지에 비유 (기능이 거의 없음)
  • TCP가 가지는 기능인 연결지향(TCP 3 way handshake), 데이터 전달 보증, 순서 보장을 지원하지 않음
  • 단순하고 빠름
  • IP와 거의 같고 PORT, 체크섬 정도만 추가
  • 앱에서 추가 작업 필요 (확장해서 사용 가능)

PORT: 게임과 음악을 같이 할 때, 게임용 패킷과 음악용 패킷을 구분할 때 사용하는 것이 포트이다.
체크섬: 메시지가 맞는지 검증해주는 것

최근에는 UDP가 뜨고 있다.


PORT

여러 앱들을 구분해주는 것이 포트이다.

이해하기 쉽게 비유하면
IP가 아파트이고
PORT는 0동 000호이다.

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

DNS (Domain Name System)

  • 전화번호부
  • 도메인 명을 IP 주소로 변환

References
https://www.inflearn.com/course/http-%EC%9B%B9-%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC/dashboard

0개의 댓글