- 인터넷 통신
- IP(Internet Protocol)
- TCP, UDP
- PORT
- DNS
복잡한 인터넷 망에서 다른 사람에게 데이터를 어떻게 보낼까?
최소한의 규칙을 부여해서 데이터를 전달하는데, 클라이언트와 서버의 IP 주소를 이용한다.
IP (Internet Protocol)
- 지정한 IP 주소에 데이터 전달, 정보를 주고받는 데 사용하는 정보 위주의 규약(프로토콜, Protocol)
- 패킷이라는 통신 단위로 데이터 전달
IP 패킷
- 패키지 + 덩어리의 합성어 데이터를 보낼 때 IP 패킷 규칙에 따라 보내게 된다.
- 전송 데이터와, 데이터 출발 IP, 목적지 IP 등이 포함된다.
- IP 패킷이 만들어지면, 인터넷 망의 노드들에 의해 최종 목적지 IP에 도달 되어 전송된다.
- 목적지에서 정상적으로 데이터를 받았으면, 송신자도 패킷을 만들고 인터넷 망을 통해 출발 IP에게 전송한다.
한계가 있는데?
- 비연결성
- 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송 된다
- 클라이언트는 대상 서버가 패킷을 받을 수 있는 상태인지 모른다!
- 비신뢰성
- 중간에 패킷이 사라진다면? 패킷이 순서대로 안온다면?
- 프로그램 구분
- 같은 IP를 사용 하는 서버에서 통신하는 애플리케이션이 둘 이상이면?
인터넷 프로토콜 스택의 4 계층
- 애플리케이션 계층 : HTTP, FTP
- 전송 계층 : TCP, UDP
- 인터넷 계층 : IP
- 네트워크 인터페이스 계층
- 전송하고자 하는 메시지 데이터는 프로토콜 계층을 거쳐 TCP 정보, IP 정보, Ethernet frame 정보가 차례대로 감싸 진다.
TCP/IP 패킷 정보
- 프로토콜에 의해 전송 데이터에 TCP 정보가 감싸 진다.
- 출발지 외에 전송 제어, 순서, 검증 정보 등이 포함되어 신뢰 할 수 있다.
TCP (Transmission Control Protocol)
- 연결 지향 - TCP 3 way handshake 가상 연결
- 양쪽에서 전송 요청과, 응답 요청을 받고 보내며 연결
- 서버가 죽어있거나 문제가 있으면 연결이 되지 않는다.(2) 서버에서 응답 요청 ACK와 전송 요청 메시지 SYN을 전달
- (3) 클라이언트에서 응답 요청 ACK를 전송해 서버와 연결
- (1) 클라이언트에서 서버로 전송 요청 SYN 전달
2. 데이터 전달 보증
- 패킷이 누락 됬는지 확인 할 수 있다.
- TCP는 데이터 전송을 받으면, 클라이언트한테 응답 메시지를 전달
3. 순서 보장
- 큰 데이터일 경우 패킷 분할 전송하고, 서버에서 TCP의 순서 정보로 패킷 순서를 확인한다.
4. 신뢰할 수 있는 프로토콜
5. 현재는 대부분이 TCP를 사용한다.
UDP (User DataGram Protocol)
- 연결 지향 - TCP 3 way handshake X
- 데이터 전달 보증 X
- 순서 보장 X
- 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
- IP와 유사하지만, Port, CheckSum 정도만 추가
- 애플리케이션에서 추가 작업이 필요하다.
Port
- 여러 패킷 전송 시 어떤 패킷으로 확인하기 위함, 같은 IP 내에서 포트 정보로 프로세스를 구분
- 0 ~ 65535 할당 가능
- 0 ~ 1023 잘 알려진 포트, 사용하지 않는 것이 좋음
- FTP - 20,21
- TELNET - 23
- HTTP - 80
- HTTPS - 443
DNS (Domain Name System)
- 일종의 전화번호부 도메인 명을 IP 주소로 변환
[인터넷 네트워크 정리]
- 인터넷에서 데이터를 전송하기 위해서는 인터넷 통신이 필요하다. 그것을 IP(Internet Protocol)이라 하는데!
- IP로는 신뢰성이 없고, PORT도 없어 프로세스를 구분하지 못한다.
- 그래서! TCP 프로토콜로 신뢰성을 보증하고, Port정보로 프로세스를 구분할 수 있다.
- UDP는 IP란 유사하지만, 다른 점은 PORT 정보만 있다.
- DNS는 IP는 외우기 어려우니 도메인 명을 사용해서 구분할 수 있게 한다.
REFERENCE
인프런 강의 - HTTP 모든 개발자를 위한 HTTP 웹 기본 지식
300x250
'기타 > HTTP' 카테고리의 다른 글
HTTP 헤더1 - 일반 헤더 (0) | 2021.09.02 |
---|---|
[HTTP] 상태 코드 (0) | 2021.08.01 |
[HTTP] HTTP 메서드 (0) | 2021.07.23 |
[HTTP] HTTP(HyperText Transter Protocol) 기본 (0) | 2021.07.21 |
URI와 웹 브라우저 요청 흐름 알아보기 (0) | 2021.07.21 |