HTTP_인터넷 네트워크
보통 클라이언트와 서버 사이에 인터넷이 존재함. 이런 클라이언트와 서버 두 컴퓨터 사이에 인터넷에는 수많은 노드들이 있음. 이런 어지럽게 펼쳐진 노드들 사이에서 통신을 하기위한 방법으로는 IP(인터넷 프로토콜)이 있음.
IP(인터넷 프로토콜)
컴퓨터 마다 갖고있는 고유 주소. IP 인터넷 프로토콜의 역할은 아래와 같음.
- 지정한 IP Address에 데이터 전달
- 패킷 단위로 데이터 전달
패킷으로 데이터를 전달하면 클라이언트와 서버사이에 이어진 노드들을 거치고 거쳐서 전달. 클라이언트와 서버 사이의 전달 경로는 항상 같지 않음.
IP(인터넷 프로토콜)의 한계
- 비연결성
-> 패킷을 받을 대상이 없어도 패킷이 전송됨
- 비신뢰성
-> 제대로 전달되는지에 대한 신뢰성이 부족함
- 프로그램 구분
-> 같은 IP에서 오는 요청에 대한 부분
- 순서가 있는 패킷들의 전송
-> 보낼땐 순서가 있지만 노드를 타고 가는건 바뀔 수 있음
이러한 한계점을 해결하기 위한 것이 TCP, UDP
TCP, UDP
인터넷 프로토콜 스택 4계층
- 어플리케이션 계층
-> 프로세스간 통신을 위해 설계된 계층 (HTTP, FTP, TLS/SSL)
- 전송 계층
-> 송신자와 수신자를 연결하는 서비스에 대한 정보를 담는 계층 (TCP UDP)
- 인터넷 계층
-> 패킷을 전송하기 위한 계층 (IP)
- 네트워크 인터페이스 계층
-> 물리적 전송을 위한 계층 (LAN 장비)
TCP는 전송할 데이터가 들어올 때 해당 데이터를 TCP 정보로 감싸고 -> IP패킷을 생성하고 전송하는 순서
- IP패킷은 출발지 IP, 목적지 IP 등의 정보를 담고있음
- TCP 세그먼트는 출발지 PORT, 목적지 PORT, 전송 제어 정보, 순서 정보, 검증 정보 등을 담고있음
TCP (Transmission Control Protocol) 특징
- 연결지향 - TCP 3 way handshake (가상 연결)
-> 먼저 연결한다음 데이터 전달
-> 클라에서 SYN(연결요청인듯) 전달, 서버에서 SYN + ACK(응답인듯) 전달, 클라에서 다시 ACK 전달
- 데이터 전달 보증
-> 중간에 누락되면 알수있음
-> 잘 받았어도 알려줌
- 순서 보장
- 신뢰성
- 현재 범용적으로 사용됨
UDP (User Datagram Protocol) 특징
- TCP특징들은 전부 포함 안됨
- 단순하고 빠름
- IP에서 PORT, 체크섬 정도만 추가된 것
- 만약 추가 작업이 필요할 때 사용
PORT
같은 IP 내에서 프로세스 구분. IP 주소 뒤에 붙음. 패킷 보낼 때 같이 보내는 출발지 PORT, 도착지 PORT에 담겨있음.
- 0 ~ 65535까지 할당 가능
- 0 ~ 1023 은 사용하지 않는게 좋음.
- FTP 20, 21
- TELNET 23
- HTTP 80
- HTTPS 443
DNS (Domain Name System)
IP 주소는 기억하기 어렵고, 서버의 IP 주소가 바뀌게 되면 클라이언트에선 인지할 수 없기 때문에 도메인 이름을 명시해둠.