Search

[HTTP] 인터넷 네트워크

태그
IP(인터넷 프로토콜)
웹 네트워크
속성 1
2022/05/07 15:51
속성
2023/12/10 11:42
속성 2
순서
1
해당 자료는 인프런 김영한 님의
모든 개발자를 위한 HTTP 웹 기본 지식을 참고하여 작성하였습니다.
목차

IP(인터넷 프로토콜)

인터넷 프로토콜 역할

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

IP패킷 정보

출발 IP
목적 IP
기타등등.. 많은 정보를 내포하고 있다.

클라이언트 패킷 전달

IP프로토콜의 규약에 따라 출발지 IP Address에서 목적지 IP Address로 노드들이 던지면서 목적지(IP Address)에 도착하게 된다.

서버 패킷 전달

목적지에 잘 전달 받으면 응답으로 클라이언트 IP Address로 응답 패킷을 전달한다.
참고: 클라이언트 → 서버에서의 노드랑, 노드 → 클라이언트로 패킷이 전송될 때 인터넷망이 복잡하기 때문에 다른 경로로 전달 될 수있다.

IP 프로토콜의 한계

비연결성
패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송
비신뢰성
중간에 패킷이 사라지면?
패킷이 순서대로 안오면?
프로그램 구분
같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면?
이러한 문제를 해결 해주기 위해 나온 방식이 TCP, UDP 방식이다.

TCP, UDP

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

프로토콜 계층

1.
애플리케이션 웹브라우저, 네트워크 게임, 채팅 프로그램에서 메세지를 Socket 라이브러리를 통해 OS 계층으로 전달한다.
2.
OS 계층의 TCP에서 TCP세그먼트로 감싸준다.
3.
IP에서 IP패킷을 생성 한 후 TCP 세그먼트를 감싸준다.
4.
네트워크 인터페이스에서 Ethernetframe로 감싸준다.(랜카드의 맥주소 등등 )

TCP/IP 패킷 정보

TCP 특징

전송 제어 프로토콜(Transmisstion Control Protocol)
연결지향 - TCP 3 way handshake (가상연결)
1.
클라이언트 → 서버 SYN연결 요청 전송
2.
서버에서 → 클라이언트로 SYN + ACK 나도 연결 해달라고 응답 전송
3.
클라이언트 → 서버로 알겠다고 응답으로 ACK 전송
이제 클라이언트와 서버간의 신뢰되게 연결 할 수 있다. 이후 데이터 전송
참고 : 진짜로 물리적으로 연결된 것이 아닌 개념적으로 연결된 것이다.
데이터 전달 보증
클라이언트에서 서버로 데이터 전송 시 데이터가 잘 받았는지 응답의 유무에 따라 전달 보증을 확인할 수 있다.
순서 보장
1.
클라이언트 → 서버로 패킷을 전송할 때 패킷 순서를 확인한다
2.
패킷 순서가 맞지 않으면 맞는 패킷까지 보관, 나머지 영역은 버린다.
3.
버린영역을 순서에 맞게 달라고 클라이언트에게 다시 요청한다.
참고 : 순서 등등은 TCP/IP 패킷 정보의 전송 제어, 순서 정보등으로 확인한다.
신뢰 할 수있는 프로토콜
현재는 대부분 TCP 사용

UDP 특징

사용자 데이터그램 프로토콜(User Datagram Protocol)
하얀 도화지에 비유(기능이 거의 없음)
연결지향 - TCP 3way handshake X
데이터 전달 보증 X
순서 보장 X
데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
정리
IP와 거의 같다. +PORT + 체크섬 정도만 추가
애플리케이션에 추가 작업 필요
참고: 요즘에는 웹브라우저에서 HTTP 통신할 때 최대한 간편하게 동작하는 것을 원하기 때문에 3 handshake 도 줄여서 속도를 빠르게 해보자는 취지하에 많이 각광받고 있다.

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

현재 PC에서 게임, 영상통화, 웹브라우즈를 동시에 사용하고 있다고 가정을 하면, 여러게의 패킷을 동시에 전 달받을 수 있다. 이때 포트를 통해서 해당하는 영역으로 전송하게 된다.
그렇다면? 어떻게 포트를 구분할 수 있을까? 이부분은 TCP/IP영역에서 TCP 세그먼트 안에 출발지 PORT와 목적지 PORT의 정보가 들어있기 때문이다.
정리 : IP는 목적지, PORT는 서버안에서 돌아가는 애플리케이션을 찾는다.

PORT

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

DNS

IP는 기억하기 어렵고, 변경될 수 있다.

기존의 서버는 200.200.200.2 → 200.200.200.3 으로 변경되면 클라이언트는 헷갈릴 수 있다. 이를 해결하는 방법이 DNS 서버이다.
DNS 서버를 사용해서 도메인 명으로 해당하는 IP를 찾을 수 있다.
IP를 변경해도 도메인 명이 유지 됨으로 사용자는 헷갈일 일이 없다.
URI와 웹 브라우저 요청 흐름