TIL - 100222

케이·2022년 2월 11일
0

TIL

목록 보기
6/13
post-thumbnail

해당 내용은 김영한 님의 '모든 개발자를 위한 http 웹 기본 지식' 강의를 보고 정리한 내용입니다. (업데이트 중입니다) 틀린 부분이 있다면 언제든지 지적해주시면 감사하겠습니다.🙏🏻

인터넷통신

  • IP(인터넷 프로토콜)
  • 지정한 ip주소로 데이터를 전달. 패킷이라는 단위로 전달.
  • Ip 패킷: 내 아이피와 목적지 아이피, 메시지가 담긴 ip 패킷을 던지면 노드에서 노드로 이동을 해가면서 목적지 아이피를 찾다가 도달.

IP 프로토콜의 한계

  • 비연결성
  • 비신뢰성
  • 프로그램 구분.. 인터넷하면서 음악도 듣고 이러는데 이때 어떻게 구분을 할 것인가?
  • 패킷 소실, 패킷의 전달 순서 문제 발생 -> 이런 문제를 해결해주는게 tcp, udp

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

  • 애플리케이션 계층 - http, ftp
  • 전송계층 - tcp, udp
  • 인터넷계층 - ip
  • 네트워크 인터페이스 계층

Tcp 는 전송제어 프로토콜

  • 연결지향: 연결을 하고 메시지를 보냄.
  • 데이터 전달 보증: 중간에 누락되었으면 내가 알 수있다.
  • 순서 보장
  • 신뢰할 수 있는 프로토콜
  • 현재는 대부분 tcp 사용

연결지향 - 3 way handshake
1. Syn 2.syn + ack 3. Ack
Syn - 접속요청 ack - 요청수락
이렇게 된 뒤에 데이터를 전송함. 참고로 3ack 와 같이 메시지 전송

논리적으로만 연결이 된 것이다.. 라고 이해

UDP

  • UDP는 TCP와 같은 계층에 있는 프로토콜인데 하얀 도화지에 비유된다 -> 기능이 거의 없음.
  • IP와 거의 같음.포트와 체크섬 정도만 추가.
  • 게임용인지 음악용인지 구분하는 것 = 포트
    (TCP는 그대로 쓰고 UDP를 건드려서 최적화를.. 최근 각광 받고 있음.)

Port

  • 한번에 둘 이상 연결해야 하면?
  • 클라이언트 피씨가 여러가지 서버랑 연결될때 어떤거인지 구분하기 위해서 출발지 포트, 목적지 포트.
  • 패킷 정보 tcp/ip 패킷에는 출발지 & 목적지의 ip, port, 전송데이터를 포함한다
  • 같은 아이피 안에서 프로세스를 구분하는것이 포트
    포트 번호 0~ 023은 잘 알려진 포트라서 사용하지 않는 것이 좋음.
  • 대표적인 포트 정리..해야함..

DNS

  • IP는 변경될 수 있고 기억하기 어렵다.
  • DNS는 도메인 네임 시스템으로 전화번호부 같은 것이라고 생각하면 이해가 쉽다.

URI와 웹 브라우저 요청 흐름

  • URI는 로케이터 (locator), 이름(name) 또는 둘다 추가로 분류될 수 있다.
  • URI 안에 URL과 URN을 포함.
  • 거의 URL을 쓴다.

Protocol

  • 프로토콜: 어떤 방식으로 자원에 접근할 것인가 하는 약속 규칙
  • User Info는 거의 사용하지 않음
  • 포트는 일반적으로 생략.
  • 쿼리는 key = value 의 형태. 보통 쿼리 파라미터, 쿼리 스트링으로 불림.

http

  • 지금은 모든 것을 http에 담아서 전송한다.
  • http 1.1 지금 우리가 많이 사용하고 가장 중요한 버전.
  • 특징
    - 클라이언트 서버 구조
    - 무상태 프로토콜, 비연결성
    - http 메시지
    - 단순하고 확장가능하다
  1. 클라이언트 서버구조 - 클라이언트는 서버에 요청을 보내고 응답을 대기함. 비지니스 로직이랑 데이터는 다 서버에 밀어넣는다. 클라이언트는 ui랑 사용성에 집중. 이러면 클라이언트와 서버가 각각 진화할 수 있음

  2. 무상태 프로토콜 stateless - 상태유지는 stateful.
    서버가 상태를 보존하지 않는게 무상태.
    갑자기 클라이언트 요청이 늘어나도 서버를 대거 투입 할 수 있다. 무한한 서버 증설 가능.
    한계 - 모든 것을 무상태로 설계 할 수 있는 경우도 있고 없는 경우도 있다.

  3. 비연결성
    서버 유지하는 자원을 최소한으로 사용 할 수 있다.
    http는 기본적으로 연결을 유지하지 않는 모델
    단점 - 요청하면 html뿐만 아니라 자바스크립트,css 등등 수 많은 자원이 함께 다운로드.

http 메시지

구조 - 시작라인, 헤더, 공백라인, 메시지바디

요청메시지

  • 시작라인은 request라인과 status라인이 있음
  • request라인에는 method, path, http 버전.
    서버가 수행해야 할 동작지정. Get/post
  • http 헤더 - 필드네임은 대소문자 구분없음
    용도: http 전송에 필요한 모든 부가 정보.

http api 를 만들어보자

  • 리소스와 행위를 분리!
  • URI는 리소스만 식별.

http method - get, post

  • Get: 리소스 조회
  • Post: 요청데이터 처리, 주로 등록에 사용
  • Put: 리소스를 대체, 해당 리소스가 없으면 생성
  • Patch: 리소스 부분 변경
  • Delete: 리소스 삭제
    Head get과 동일하지만 메시지 제외하고 상태 줄과 헤더만 반환

Get - 리소스 조회.
Post- 요청 데이터 처리. 메시지 바디를 통해 서버로 요청 데이터를 전달하고 서버는 요청 데이터를 처리.

profile
삽질하며 깨닫고 배웁니다. (a.k.a 프로삽질러) + 이 구역의 회고왕

0개의 댓글