[HTTP] 인터넷 네트워크

gayoung·2022년 4월 3일
0

스프링 완전 정복

목록 보기
24/33

1. 인터넷 통신

  • 다양한 인터넷노드를 통해 클라이언트는 서버로, 서버는 클라이언트로 요청 또는 응답을 보냄

2. IP(Internet Protocol)

[ 역할 ]

  • 지정한 IP 주소(IP Address)에 데이터 전달
  • 패킷(Packet)이라는 통신 단위로 데이터 전달
  • 클라이언트가 IP패킷에 출발지IP, 목적지IP, 기타 + 전송 데이터를 넣고 서버로 전달
  • 서버가 패킷에 출발지IP, 목적지IP, 결과 데이터들을 넣고 클라이언트로 전달

[ IP 프로토콜의 한계 ]

  • 비연결성
    • 패킷을 받을 대상이 없거나, 서비스 불능상태여도 패킷 전송됨
    • 그치만, 그 결과를 알수는 없음
  • 비신뢰성
    • 클라이언트에서 서버로 가거나, 서버에서 클라이언트로 갈 때 패킷 소실 가능
    • 패킷 전달 순서 문제 발생
      • 패키지 용량이 크면(1500바이트 넘으면) 끊어서 보냄 -> 서로 다른 노드 탈 수 있음
      • 내가 던질 때랑 친구가 던질 때랑 경로가 다를 수 있음
  • 프로그램 구분
    • 같은 IP를 사용하는 서버에서 통신하는 어플리케이션이 2개 이상인 경우

3. TCP, UDP

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

  • 애플리케이션 계층 - HTTP, FTP
  • 전송 계층 - TCP(IP위에 얹혀서 조금 보완해주는 것), UDP
  • 인터넷 계층 - IP
  • 네트워크 인터페이스 계층

[ 프로토콜 ]

[ IP 패킷과 TCP/IP 패킷의 차이 ]

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

[ TCP 특징 ]

  • 연결지향 - TCP 3 way handshake (가상 연결)
    • 클라이언트, 서버 모두 SYN, ACK를 보냄 -> 클라이언트도 서버를 믿을 수 있고, 서버도 클라이언트 믿을 수 있음
    • 만약에 서버가 껴져있었는데 클라이언트가 접속하려면 SYN메세지 보냈을 때 서버에서 응답이없으니까 연결안됨 -> 서버에서 응답이 없으므로 클라이언트가 hello world 메세지 안보냄!
  • 데이터 전달 보증
  • 순서 보장
    • A,B,C 순서로 클라이언트가 보냈는데, 서버가 A,C,B순서로 도착했으면 C보다 B먼저 보내라고 클라이언트한테 요청
  • 신뢰할 수 있는 프로토콜
  • 현재는 대부분 TCP 사용

[ UDP 특징 ]

  • 기능이 거의 없음(하얀 도화지에 비유)
  • 연결지향 - TCP 3 way handshake X
  • 데이터 전달 보증 X
  • 순서 보장 X
  • 데이터 전달 및 순서가 보장되지 않지만, 단순하고 빠름
  • IP와 거의 동일 +PORT에 체크섬(체크메세지) 정도만 추가
    • PORT: 하나의 ip에서 여러 애플리케이션 접속할 때 해당 패킷을 알려줌
  • 애플리케이션에서 추가 작업 필요

[ TCP와 UDP 정리 ]

  • 복잡한 인터넷 망애ㅔ서 메세지보내려면 IP필요하지만, 이것만 가지고는 데이터가 잘 보내졌는지 신뢰하기 어렵고, port라는 개념도없고, 순서가 꼬일 수도 있음 -> TCP가 해결
  • TCP의 단점: 데이터 양도 크고 전송속도 느림,,ㅠ -> 최적화 불가능
  • UDP는 IP와 똑같은데 포트가 추가된 백지상태
    필요하면 UDP프로토컬위에 어플리케이션에서 확장가능

4. PORT

  • 같은 IP 내에서 프로세스 구분
  • 클라이언트가 200.200.200.3:80으로 요청보냄
    서버가 응답할 때 100.100.100.1:10010으로 응답함 ->요청보낼 때 TCP/IP패킷에서 출발지ip랑 port 보내기 때문

5. DNS

  • IP는 기억하기 어렵고, 변경될 수 있음
  • DNS = 도메인 네임 시스템 -> 도메인 명을 등록해 IP주소처럼 사용

0개의 댓글