프로그래밍 공부

HTTP 웹 기본 지식 - 1 인터넷 네트워크

모든 개발자를 위한 HTTP 웹 기본 지식 (김영한) 강의를 정리합니다. 

저번에 들었던 스프링 기본 강의를 다 들어서, 이제 스터디원들끼리 HTTP 강의로 넘어갔다! (김영한님 커리큘럼 따라가는중)

 

IP (인터넷 프로토콜)

지정한 IP 주소에 데이터를 전달하게 된다. 

IP 패킷은 출발지 IP와 목적지 IP등이 들어가고, 전송데이터를 감싸는 형태로 들어가게 된다.

* 패킷이란 - 패키지 + 버킷의 합성어

 

ip 프로토콜의 한계

비연결성 - 패킷을 받을 대상 X 또는 서비스 불능이어도 전송됨

→ 클라이언트는 받을 수 있는 상황인지 모르는 것!

 

비신뢰성 - 패킷이 중간에 사라지거나 순서대로 안올 수 있음

→ 갑자기 보내는 도중에 문제가 나오거나, 패킷을 끊어서 보낼 경우 순서대로 도착해야 하는데, 그게 안될 수 있음. 

 

프로그램 구분 - 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 2개 이상이라면?

 

이와같은 IP 프로토콜의 한계로 다시 나오는 것이 TCP, UDP이다.

 

TCP UDP

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

이러한 계층들을 거쳐가며, 결과적으로 정보는

이더넷 프레임(좀더 딥한 개념이므로 여기서는 생략) + IP + TCP + 전송데이터가 들어가게 된다.

 

특징

연결지향 - 연결을 한 뒤에 제공

TCP 3way handshake
  : 클라이언트도 서버도 서로 믿을 수 있도록 연결하는 것.

   1. 클라이언트가 서버한테 접속 요청 (SYN)

   2. 서버가 클라이언트 요청 수락 (ACK) + 접속 요청 (SYN)

   3. 클라이언트가 서버한테 요청 수락 (이 이후에 데이터를 전송했었지만, 최근에는 동시에 전송한다)

 

→ 이때 연결은 물리적으로 '선'이 연결된 방식같은 것이 아니다.

 

데이터 전달 보증 - 데이터가 잘 보내졌는지 응답 제공 

 

순서 보장 - 중간에 잘못오면 다시 보내라고 보내는 것.

UDP

기능이 거의 없어서, 하얀 도화지에 비유한다. 단순하고 빠름!

IP와 거의 동일하지만, PORT (하나의 ip에서 여러 애플리케이션 쓸 경우 각각의 패킷을 구별하는 용도) 체크섬(검증하는 데이터)

TCP는 시간이 좀 걸리고, 데이터 양이 좀 많아지는 편이다. 그렇기에 더 최적화하기 힘든 편.

but UDP는 그 위에 내가 원하는대로 구성 가능하다는 것이 강점이다. 

 

최근에 각광받고 있다! 

  웹 브라우저에서 더 최적화를 하면서 UDP가 각광받고 있는 것. 

 

PORT

한번에 둘이상을 연결해야 한다면?

→ 따라서 UDP, TCP의 경우 PORT를 추가함.

IP는 목적지 서버를 찾는 것. 그 서버안에 돌아가는 애플리케이션을 찾는 것이 PORT

→ IP가 아파트라면 PORT는 아파트의 호수

 

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

 

DNS

IP는 기억하기 어렵다 (숫자로 쓰기 힘들다)

IP는 변경될 수 있다.

 

이에 나온 기능이 도메인명을 IP 주소로 바꾸는 도메인 네임 시스템 (Domain Name System)