1.모든 개발자를 위한 HTTP 웹 기본지식 - 김영한 -inflearn

YP J·2022년 7월 22일
0

inflearn-http-김영한

목록 보기
2/7
  • 인터넷 통신
  • IP(Internet Protocol) , IP Protocol
  • TCP, uDP
  • PORT
  • DNS

1. IP (인터넷 프로토콜) 의 역할

  • 지정한 IP 주소 (IP Address)에 데이터 전달
  • 패킷(Packet) 이라는 통신 단위로 데이터 전달
    • IP 패킷 정보: 출발지 IP + 목적지 IP + 데이터
    • 클라이언트 패킷 전달 <-> 서버 패킷 전달

IP 프로토콜의 한계

  • 비연결성
    • 패킷을 받을 대상이 없거나 서비스 불능 상태여도 패킷 전송, 걍 던진다.
  • 비 신뢰성
    • 중간에 패킷이 사라지면?
    • 패킷이 순서대로 안 오면?
  • 프로그램 구분
    • 같은 IP를 사용하는 서버에서 통신하는 애플리케이션이 둘 이상이면 ?

이런 문제를 해결 하는게 TCP이다~ UDP 는 그런걸 해결해 주지 않는데 도움이 되는 게 있다~


TCP

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

  • 애플리케이션 계층 - HTTP, FTP
  • 전송 계층 - TCP, UDP
  • 인터넷 계층 - IP
  • 네트워크 인터페이스 계층

프로토콜 계층

  • 애플리케이션
    • 웹 프라우저 - SOCKET라이브러리
  • OS
    • TCP , UDP
    • IP
  • 네트워크 인터페이스
    • LAN 드라이버
    • LAN 장비

채팅 프로그램으로 미국에 있는 얘한테 채팅 보내고플때.
1. 프로그램이 Hello, world! 메세지 생성 하고 소켓 라이브러리를 통해서
2. OS 계층에다 메세지를 보낸다.
3. 메세지에 TCP 패킷(팩) 씌운다, 그다음 IP 패킷(팩) 을 씌운다.
4. 그다음에 Ethernet frame 이 씌어져서 나간다( 물리적인 정보들 포함)

TCP, IP 패킷 정보

  • IP 패킷 : 출발지 IP , 목적지 IP ,기타 ... , (전송 데이터)
  • TCP 세그먼트 : 출발지 PORT, 목적지 PORT , 전송제어, 순서, 검증정보 ... ,(전송 데이터)

TCP 특징

전송 제어 프로토콜 (Transmission Control Protocol)

  • 연결 지향 - TCP 3 way handshake(가상 연결)

    • 물리적으로 연결 된게 아니라 개념적으로 연결 된것.
    • 아 ~ 연결이 됐나 보다라고 논리적으로만 연결된것 (중간에 수많은 서버노드들이 있음)
  • 데이터 전달 보증

  • 순서 보장

  • 신뢰할 수 있는 프로토콜

  • 현재 대부분 TCP 사용

TCP 3 way handshake

< 연결 과정
SYN : 접속 요청 // ACK : 요청 수락 ( 한번에 SYN, ACK 보낼수 있음)

    1. 클라이언트 -> SYN -> 서버
    1. 클라이언트 <- SYN + ACK <- 서버
    1. 클라이언트 -> ACK -> 서버

열결 확인 되면 -> 데이터 전송

< 데이터 전달 보증

  • 클라이언트 -> 데이터 전송 -> 서버
  • 클라이언트 <- 데이터 잘받았음 <- 서버

< 순서 보장

  • 클라이언트 -> 1.패킷1,2,3 순서로 전송 근데 서버에서 패킷 1 3 2 로 받으면
  • 클라이언트 <- " 패킷 2부터 다시보내 " <- 서버 // 이렇게 된다.

UDP 특징

사용자 데이터그램 프로토콜(User Datagram Protocol)

  • 하얀 도화지에 비유 (기능이 거의 없음)
  • 연결 지향 X
  • 데이터 전달 보증 X
  • 순서 보장 X
  • 그러나 단순하고 빠름
  • 정리
    • IP와 거의 같다.
    • +PORT +체크섬 정도만 추가
    • 애플리케이션에서 추가 작업 필요

포트란 ? 하나의 아이피에서 여러개의 패킷 (네트워크 게임, 음악스트리밍 패킷인지 ) 을 구분할때 쓰인다 포트는

TCP 는 손을 못댄다. 최적화를 못한다.
But UDP 는 최적화가 가능하다.


PORT

한번에 둘 이상 연결해야 한다면?
: 같은 아이피 안에서 애플리케이션 구분 하기위해

  • 0 ~ 65535 할당 가능
  • 0 ~ 1023 : 잘 알려진 포트, 사용하지 않는 것이 좋다.
    • FTP - 20, 21
    • TELNET - 23
    • HTTP - 80
    • HTTPS - 443 ( http 에 보안이 추가된것 )

DNS(Domain Name System)

IP 는 기억 하기 어렵다.
IP 는 변경이 가능하다. 그래서 고객이 접근 하지 못하는 경우가 생긴다

  • 전화번호부, 도메인 명을 IP주소로 변환

  • DNS 서버에 도메인 사서 등록 하는것.


profile
be pro

0개의 댓글