TCP/IP 4 계층

jaegeunsong97·2023년 1월 18일
0

2023_1_18_TIL

TCP/IP 4계층

  • 인터넷 상에서 데이터를 주고받을 때 쓰는 독립적인 프로토콜
    • 주고받을 때 여러 고민들의 집합
  • Transmission Control Protocol / Internet Protocol
  • 인터넷을 통해 데이터를 보낼 때 주로 TCP와 IP를 이용

애플리케이션 계층

  • HTTP SMTP SSH FTP -> 웹 서비스, 이메일 등 서비스를 실질적으로 제공하는 층
  • http1..http2..http3 -> 변한다고 브라우저 재설치?? NO! -> 독립적

전송 계층

  • 애플리케이션에서 받은 메시지를 기반으로 세그먼트(TCP) or 데이터그램(UDP)으로 데이터를 분할 -> 데이터가 오류없이 순서대로 전달되도록 도움

인터넷 계층

  • IP, ICMP, ARP
  • 전송계층에서 받은 세그먼트(TCP) or 데이터그램(UDP)를 패킷화 후 링크 계층으로 전송

링크 계층(네트워크 계층)

  • 데이터가 네트워크를 통해 물리적으로 전송되는 방식

캡슐화와 비캡슐화

  • encapsulation -> '보내는사람'이 '받는사람'에게 데이터를 보냄(각 계층들을 지남 + 각 계층만의 '헤더IP'가 붙음) -> IP헤더가 붙는 과정을 뜻함
  • decapsulation
    • 반대 과정 ㅇㅇ(IP헤더 제거하면서 응용계층까지 가는 것)

PDU

  • Protocol Data Unit
  • 애플리케이션 -> 메시지
  • 전송 -> 세그먼트(TCP), 데이터그램(UDP) -> 2개 같은 의미
  • 인터넷 -> 패킷(세그먼트 + [(SP + DP)붙은 IP헤더]
    • IP헤더가 붙으면서 '패킷화' 진행
    • Source IP Adress -> '보내는사람'의 32비트 IP주소
    • Destination IP Adress -> '받는사람'의 32비트 IP주소
  • 링크 -> 프라임(데이터링크 계층), 비트(물리 계층)

CRC/체크섬 트레일러

  • 과도한 트래픽으로 인해 입은 데이터 손상을 감지하는 역할(데이터 오류감지)

OSI 7계층

  • TCP/IP 4계층와 비슷

MTU, MSS, PMTUD

  • 어떻게 패킷이 쪼개 질까?? -> Maximum Transmission Unit 기반으로 쪼개진다!
  • MTU는 네트워크 통신할 때 할 수 있는 가장 큰 PDU의 크기
    • 네트워크와 네트워크 사이마다 설정되어 있음
    • MTU보다 크면 분할 후 다시 보내거나 못보냄
  • 통신하는 양쪽 끝은 MTU뿐만 아니라 중간의 라우터, 스위치, 서버 모두 고려
    • 네트워크 상의 아무장치나 MTU보다 패킷이 크면, 해당 패킷 분할

패킷이 분할되지 않는 경우

  • IPv6 -> 분할 못함
  • IPv4 -> 헤더에 flags라는 field가 있음
    • flags 0 -> Reserved
    • flags 1 -> Dont fragment
    • flags 2 -> More fragment

MTU, MSS

  • 이더넷 프레임(1518 일반적) = 이더넷 헤더 + 이더넷MTU + FCS
    • FCS -> CRC에서 생성된 값이 여기로 이동, 데이터 에러 검춤하는 것
  • MTU = IP헤더 + TCP헤더
  • MSS = Payload
  • 데이터를 보낼 때는 IP헤더의 크기도 고려해서 보내야한다!!

PMTUD

  • Path MTU Discovery
  • 사이즈에 맞게 다시 MTU를 보내는 것(패킷을의 크기를 낮추는 것)

에플리케이션 계층

  • HTTP SSH FTP SMTP 웹 서비스, 이메일 등 서비스를 실질적으로 제공하는 층

HTTP

  • Hypertext Transfer Protocol
  • (예전) 서버와 브라우저 간 데이터 주고받기
  • (지금) 브라우저 뿐 아니라 서버와 서버간 데이터 및 통신할 때도 사용
  • 특징
    • 헤더를 통한 확장 Good -> 쉽게 헤더에다가 다른 값 넣을 수 있다는 것
    • stateless -> Server가 Client를 기억하지 못함

SSH

  • Secure SHhell Protocol
  • 보안되지 않은 네트워크에서 네트워크 서비스를 안전하게 운영하기 위한 '암호화 네트워크 프로토콜'
  • AWS로부터 받은 key인 'pem'을 기반으로 SSH사용 후 서비스 함

FTP

  • File Transfer Protocol
  • 노드와 노드간의 파일을 전송하는데 사용되는 프로토콜
  • LocalPC에서 원격PC로 파일을 보낼 때
  • (예전) 암호화X -> (현재) 암호화
  • 예시) FileZilla

SMTP

  • Simple Mail Transfer Protocol
  • 인터넷 메일 보낼 때 사용하는 프로토콜 -> 에러, 공지사항 등 알려줘야 해서

전송 계층

  • 애플리캐이션에 받은 메시지를 기반으로 세그먼트(TCP) 데이터그램(UDP)로 데이터를 분할, 데이터가 오류없이 순서대로 전달되도록 도와주는 계층

TCP

  • 가상회선패킷교환방식
    • '순서대로' 패킷을 보낸다!
  • 오류검사 메커니즘
    • 재전송 -> 시간 초과 기간 지나면 서버는 전달되지 않은 데이터에 대해 재전송을 시도(다시 기회주는 것!)
    • 체크섬 -> 무결성(송신 전후의 데이터가 같은지!)체크
      • TCP체크섬 -> 20 ~ 60Byte(가변적)

UDP

  • 데이터그램패킷교환방식
  • 오류검사는 단순한 체크섬만 지원
  • 헤더
    • 32비트(8바이트) 고정

UDP vs TCP

  • 차이점
    • 신뢰성 -> 3 웨이 핸드쉐이크 기반

인터넷계층

  • IP, ICMP, ARP -> 한 노드에서 다른 노드로 전송 게층에서 받은 세그먼트 또는 데이터 그램을 '패킷화' 후 전송!

ICMP

  • Internet Control Message Protocol -> 노드와 노드사이 '통신이 잘 되나~?'만 확인 -> 테스트로만 사용

3-웨이 핸드쉐이크

  • TCP의 연결성립과정
  • 단어
    • ISN -> 각각의 통신들을 구별하기 위해서(충돌막으려고) 고유한 통신 번호를 나타냄
      • TCP기반 데이터 통신에서 각각의 새 연결에 할당된 고유한 32비트 시퀀스 번호
    • SYN -> synchronized / 연결 요청 플래그
    • ACK -> acknowledgement / 응답 플래그
  • SYN단계 -> client는 server에 client의 ISN을 담아 SYN을 보냄
  • SYN + ACK단계 -> server는 client의 SYN을 수신하고 ISN을 보내며 승인번호로 client의 ISN+1 을 보냄
  • ACK단계 -> client는 server의 ISN+1 한 값인 승인번호를 담아 ACK를 server에 보냄

클라이언트와 서버의 상태

  • TCP 신뢰성 O(3-웨이 핸드쉐이크 O) | UDP 신뢰성 X(3-웨이 핸드쉐이크 X)

listen

  • listen 메소드를 기반으로 SYN_SENT를 받음

4-웨이 핸드쉐이크와 TIME_WAIT

  • TCP의 연결해제과정 -> 이해
  • wait(time)
    • 일정 시간 흐름
    • 지연 패킷 받으려고 -> 데이터의 무결성(정확성, 일관성) 지킴
    • 연결이 올바르게 보장되는지 -> 다시 client-server 연결시, 양쪽 다 closed상태여야 하기 때문에

TIME_WAIT

  • 최대 세그먼트 수명(MSL)의 2배정도로 함

연결성립 + 연결해제과정 정리

  • 전체 과정

참조

https://hongchangsub.com/networkprotocol/
https://ming9mon.tistory.com/11
http://www.ktword.co.kr/test/view/view.php?m_temp1=1859
https://velog.io/@jakeseo_me/OSI-7%EA%B3%84%EC%B8%B5-%EC%8B%9C%EB%A6%AC%EC%A6%88-5-%EC%84%B8%EC%85%98-%ED%91%9C%ED%98%84-%EC%9D%91%EC%9A%A9-%EA%B3%84%EC%B8%B5
https://www.cloudflare.com/ko-kr/learning/network-layer/what-is-mtu/
http://www.ktword.co.kr/test/view/view.php?m_temp1=1859
https://www.cisco.com/c/ko_kr/support/docs/ip/transmission-control-protocol-tcp/200932-Ethernet-MTU-and-TCP-MSS-Adjustment-Conc.html
https://woovictory.github.io/2018/12/28/Network-Packet-Switching-Method/
https://m.blog.naver.com/PostView.naver?isHttpsRedirect=true&blogId=minki0127&logNo=220804490550
https://velog.io/@away0419/%ED%8C%A8%ED%82%B7-%EA%B5%90%ED%99%98-%EB%B0%A9%EC%8B%9D
https://velog.io/@daon9apples/TCP%EC%99%80-UDP%EC%9D%98-%EC%B0%A8%EC%9D%B4%EC%A0%90%EA%B3%BC-%EC%9E%A5%EB%8B%A8%EC%A0%90
https://mindnet.tistory.com/entry/%EB%84%A4%ED%8A%B8%EC%9B%8C%ED%81%AC-%EC%89%BD%EA%B2%8C-%EC%9D%B4%ED%95%B4%ED%95%98%EA%B8%B0-22%ED%8E%B8-TCP-3-WayHandshake-4-WayHandshake
https://bangu4.tistory.com/74
https://www.ictshore.com/free-ccna-course/transmission-control-protocol-advanced/

profile
블로그 이전 : https://medium.com/@jaegeunsong97

0개의 댓글