[HTTP] 인터넷 네트워크

chael_lo·2022년 2월 25일
0

HTTP

목록 보기
1/6

인프런 김영한 개발자님의 자바 입문 강의를 인상 깊게 들어 올려주신 강의 중 평소 개념이 별로 없었던 HTTP 웹 기본 지식을 듣기 시작했다.

그 중 첫번째 챕터는 인터넷 네트워크다.

인터넷 네트워크

인터넷 망을 통해서 클라이언트와 서버가 통신을 한다.
인터넷 망안에서 원하는 정보를 정확한 순서로 전달하기 위해서는 HTTP를 더 이해할 필요가 있다.

IP(인터넷 프로토콜. Internet Protocol)

IP는 지정한 IP 주소에 데이터 전달한다.
패킷이라는 통신단위로 전달한다.
IP 패킷은 현재 나의 IP, 목적지 IP, 기타 등등을 넣어서 만든다.

IP 패킷 통신 과정

클라이언트에서 IP 패킷을 인터넷 망으로 전달하고(전달되면서 노드들에 의해 체크) 서버로 보내진다.
서버에서 받고 다시 IP 패킷을 만들어서 인터넷 망으로 던지고 클라이언트로 돌아온다.

IP의 한계

패킷을 받을 대상이 없거나 서비스가 가능하지 않은 상태여도 패킷이 전송되고 클라이언트는 모른다.
패킷이 중간에 사라지거나, 패킷이 순서대로 안올 수 있다.
같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 여러 개라면 구분할 수 없다.

이러한 한계를 해결해 주는 것이 TCP/UDP다.

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

TCP 패킷

TCP/IP 패킷은 IP 패킷보다 많은 정보를 담고 있다.
출발지 PORT, 목적지 PORT, 전송 제어, 순서, 검증 정보와 함께 전송 데이터를 담고 있다.

TCP 특징

아래의 특징을 가질 수 있는 것은 TCP 패킷이 정보를 담고 있기 때문이다.

  • 연결 지향
  • 데이터 전달 보증
  • 순서 보장
    클라이언트에서 서버로 보내질 때 패킷의 순서가 다를 경우, 서버가 클라이언트에게 순서가 다른 패킷부터 다시 요청한다.
  • 신뢰할 수 있는 프로토콜
  • 현재 대부분의 애플리케이션에서는 TCP를 사용한다.

TCP 3 way handshake(가상 연결)

클라이언트와 서버는 메세지(syn, ack)를 세번(왔다 갔다) 주고 받은 후 연결이 되고,
그 후 데이터를 전송하는 것을 말한다.

  • syn : 접속 요청
  • ack : 요청 수락(서버에서 클라이언트로 보낼 때 메세지도 함께 전달이 가능하다.)

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

IP와 거의 같고 TCP과 같은 기능이 거의 없다.
http 통신을 할 때 tcp를 이용하면 가상 연결이 필수인데, UDP를 이용하면 이 과정을 최소화 할 수 있어서 최근에 이용을 많이 한다.

UDP 특징

데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠르다.
IP 패킷에서 port 체크섬 정도가 추가되있는 패킷 형태이다.
애플리케이션에서 추가 작업 필요하다.

PORT

같은 IP 내에서 프로세스 구분할 때 사용한다.
한 아파트 안에서 사람들이 사는 집을 구분하는 것과 비슷하다.

PORT를 이용한 요청과정

클라이언트에서 여러 포트로 프로세스를 구분해둔 후 서버에게 패킷을 보낸다.
패킷 안에는 PORT 번호가 있어서 내가 어떤 프로세스를 요청했는지 알 수 있다.
그 요청에 맞게 서버에서 클라이언트로 다시 응답해준다.

0~ 65535 할당 가능
0~ 1023 잘 알려진 포트라 사용하지 않는 것이 좋다.

  • ftp - 20, 21
  • telnet - 23
  • http - 80
  • https - 443

DNS(도메인 네임 시스템, Domain name system)

IP는 기억하기 어렵고, 변경될 수 있다.
그래서 DNS 서버에 도메인 명을 등록하고 사용한다.

DNS 서버를 이용한 요청 과정

클라이언트가 도메인 명으로 요청을 하면 dns 서버가 도메인 명을 가지고 IP를 검색하여 클라이언트에게 응답을 주고 이후 클라이언트가 서버에게 응답해준다.

profile
천천히 꾸준히

0개의 댓글