728x90
모든 개발자를 위한 HTTP 웹 기본 지식
를 보고 노트 정리한 내용입니다.
IP
- internet protocol
- 목적지 ip 주소에 IP 패킷 전달
- IP 패킷 : 데이터를 전송하는 단위. 데이터 덩어리
IP packet
- 출발지 ip(나의 ip), 목적지 ip, 메세지 의 정보를 가진 데이터 덩어리
- 패킷이라는 통신 단위로 데이터 전달
- IP 패킷은 인터넷에 전송되어 목적지 ip 주소에 도착하게 된다.
IP 프로토콜의 한계
- 비연결성
- 대상 서버(목적지 ip)가 서비스 가능 상태인지 알 수 없다.
- 대상 서버가 서비스 불능 상태이어도 패킷을 전달한다.
- 비신뢰성
- 순서X : 패킷을 전송한 순서대로 대상 서버에 도착하지 않을 수 있다.
- 소실 : 중간에 패킷이 소실될 가능성이 있다.
- 프로그램 구분
- 목적지에 패킷이 도착하더라도 어느 프로그램(프로세스)에서 사용하는 데이터인지 알 수 없다.
TCP, UDP
인터넷 프로토콜 스택 4계층
네트워크 인터페이스 계층에서는 LAN 카드와 같은 물리적인 통신 사용
프로토콜 계층에 따른 통신 흐름
- 실행 중인 프로세스(애플리케이션)에서 채팅 메세지를 담은 데이터 생성
- 채팅 서비스를 위한 소켓 라이브러리에 전달된다.
- OS단으로 넘어와서 tcp 정보를 생성한다. 즉, 출발지 포트, 목적지 포트, 순서, 검증 정보, 전송 제어, 채팅 메세지를 포함한 tcp 세그먼트를 생성한다.
- ip 패킷을 생성한다. 즉, tcp 세그먼트에 출발지 ip주소, 목적지 ip주소를 추가하여 ip 패킷을 생성한다.
ip 패킷
TCP 특징
- 연결지향
- 3-way handshake
- 가상 연결
- 메세지를 보내기 전, 서버 상태를 확인한다.
- 3-way handshake
- 전달 보증
- 순서 보장
⇒ 신뢰할 수 있는 프로토콜
3-way handshake
- 클라이언트에서 서버로 SYN(접속 요청)
- 서버에서 SYN(접속 요청) + ACK(요청 수락)
- 클라이언트가 서버로 ACK(요청 수락) 및 논리적 연결. 이 때부터 데이터 전송이 가능하다.
- 클라이언트가 서버로 데이터 요청, 전송
- tcp 연결
- 물리적 연결 X. 논리적 연결 O
- 클라이언트와 서버 사이의 수많은 노드들의 정보를 알지 못함
전달 보증
순서 보장
- 클라이언트 → 서버. 패킷 1,2,3 순서대로 전송
- 서버는 패킷 1,3,2 순서로 전달받음
- 서버는 잘못받은 2부터 다시 요청할 것을 요구함
- 잘못된 순서로 받았다는 사실은 tcp 세그먼트 안의 순서, 검증 정보를 통해 파악한다.
UDP 특징
- 단순
- 빠름
- IP 패킷 + 포트 정보 + checksum (데이터 오류 여부 파악)
- ip 패킷 : 출발, 도착 ip 정보
- 포트 정보 : ip 하나에서 여러 패킷이 수신될 때, 어떤 어플리케이션에서 사용하는 패킷인지 구분
port
- 같은 ip 안(호스트 내부)에서 통신 중인 프로세스(application)을 구분하기 위하여 포트 사용
- ip 주소 = 아파트, 포트 = 동 호수
잘 사용되는 포트 번호
- ssh (22) : 원격접속. 보안 채널을 통해 데이터를 암호화된 방식으로 전달.
- telnet (23) : 원격접속. 데이터를 일반 텍스트로 전달.
DNS
Domain Name Server
- ip 주소는 변경될 수 있다.
- ip 주소는 암기하기 어렵다.
⇒ 도메인 이름을 사용하여 ip 주소에 접속하자.
DNS 사용 흐름
- 클라이언트가 도메인명을 입력
- dns 서버가 도메인에 맞는 ip 주소를 찾아 클라이언트에게 응답한다.
- 클라이언트는 ip주소로 서버에 접속(통신)한다.
→ ip 주소가 바뀌어도 서버에 접속할 수 있다.
정리
- ip (internet protocol)
- 비연결성(목적지 서버의 상태를 알 수 없다.)/패킷 소실/순서보장x
- tcp
- 연결으로 인한 신뢰성.(3way handshake)
- 전달 보증
- 순서 보장
- udp
- ip 패킷 + 포트 + 체크섬(오류확인)
- port
- 같은 ip 에서 여러 프로그램이 통신 중일 경우, 패킷을 구분하여 전달하기 위함
- 같은 ip 안에서 동작하는 여러 프로세스를 구분하여 데이터를 전달하기 위함
- dns
- ip주소는 변동되기 때문에 암기하기 쉬운 도메인 이름으로 ip주소에 접속한다.
URI, URL, URN
- URI
- Uniform Resource Identifier
- 리소스를 식별
- 자원 위치를 식별
- URL
- Resource Locator
- 리소스가 있는 위치 지정
- URN
- Resource Name
- 리소스 이름 부여
⇒ 위치는 변할 수 있지만, 리소스의 이름은 변하지 않음.
- Uniform
- 리소스를 식별하는 통일된 방식
- Resource
- 자원
- URI로 식별할 수 있는 모든 것을 리소스라고 한다.
- Identifier
- 다른 항목과 구분하는 데 필요한 정보
[참고] https://www.elancer.co.kr/blog/view?seq=74
URI, URL, URN 구별하기
구분 | 내용 | 설명 |
---|---|---|
URI | www.elancer.co.kr | 식별자. 웹 사이트 ip 주소 |
URL | https://www.elancer.co.kr | 식별자+위치. 웹 사이트 ip 주소 + 프로토콜 |
ip주소 + 프로토콜(포트)를 알아야지 통신 가능
(예) https://www.elancer.co.kr/blog/view?seq=74
구분 | 내용 | 설명 |
---|---|---|
URI | www.elancer.co.kr/blog/view?seq=74 | 식별자. 웹 사이트 ip 주소 |
URL | https://www.elancer.co.kr/blog/view?seq=74 | 식별자+위치. 웹 사이트 ip 주소 + 프로토콜 |
URN | blog/view?seq=74 | 접근 서버 경로에 대한 상세 정보. path |
URL 문법
scheme
- 주로 프로토콜을 사용한다.
- 프로토콜
- 어떤 방식으로 자원에 접근(통신)할 것인가에 대한 약속 규칙
host
도메인명 혹은 ip 주소
port
접속 포트. 프로토콜에 의해 생략 가능.
path
리소스 경로. 계층형 구조로 되어 있다.
query
- 쿼리 스트링, 쿼리 파라미터로 불린다.
- key=value 형태
- ?로 시작하고, &를 통해 key, value를 추가한다.
- 웹 서버에 문자 형태로 데이터를 제공한다.
웹 브라우저 요청 흐름
!! 여기 추가할 것 !!
728x90
'공부' 카테고리의 다른 글
코테 준비 (0) | 2024.10.01 |
---|---|
[AWS] AWSome Day 온라인 컨퍼런스 후기, 정리 (1) | 2023.11.18 |