[영상후기] [10분 테코톡] 🔮 수리의 TCP/IP

박철현·2023년 5월 2일
0

영상후기

목록 보기
117/160

movie

  • 인터넷 : 전 세계에 걸쳐 파일 전송 등의 데이터 통신 서비스를 받을 수 있는 컴퓨터 네트워크 시스템

  • TCP/IP : 인터넷에서 컴퓨터들이 서로 정보를 주고 받는데 쓰이는 프로토콜의 집합

  • 4계층 구성

    • Application Layer : 특정 서비스를 제공하기 위해 애플리케이션끼리 정보를 주고 받을 수 있음
      ex) FTP, HTTP, SSH, Telnet, DNS, SMTP

    • Transport Layer : 송신된 데이터를 수신측 애플리케이션에 확실히 전달(포트번호를 사용해서 애플리케이션을 찾아줌)
      ex) TCP, UDP, RTP, RTCP

    • Internet Layer : 수신측까지 데이터를 전달하기 위해 사용(IP주소를 바탕으로 올바른 목적지로 찾아갈 수 있도록 해줌)
      ex) IP, ARP, ICMP, RARP, OSPF

    • Network Access Layer : 네트워크에 직접 연결된 기기간 전송(MAC주소 사용)
      ex) Ethernet, PPP, Token Ring

    • TCP/IP 흐름

      Http://www.google.com(:80) 입력 : 80포트로 HTTP Request 메세지를 보내는 의미
      (1)구글 서버로 전송하기 위해 패킷을 만들어야 함(각 계층별 필요한 정보 추가 필요)
      (1-1) Application Layer(Http) : Http Request가 들어감
      (1-2) Transport Layer(TCP) : SP(시작 포트번호), DP(목적지 포트번호) 포함
      (1-3) Internet Layer(IP) : SA(시작 IP주소), DA(목적지 IP주소) 포함
      -> DNS 활용하여 DA(목적지 IP주소) 확인
      (1-4) Network Access Layer : MAC주소를 알아와야함
      -> 웹서버의 MAC주소가 아닌 사용자의 물리적으로 연결된 공유기의 MAC주소 필요
      -> 공유기를 통해 다른 네트워크와 연결 가능(게이트웨이 라고도 함)
      -> netstat -rn 명령어를 통해 게이트웨이 확인 가능
      -> IP주소로 MAC주소를 알아내기 위한 ARP 프로토콜(IP주소를 MAC주소로 바꿔주는 주소해석 프로토콜) 사용
      (2) 요청을 보내기 전 TCP는 연결지향형 프로토콜 임을 고려 -> 3-way-handshaking 필요(송, 수신측 연결)
      -> TCP 헤더에 적힌 플래그 사용(컨트롤 비트) : 이 중 SYN과 ACK 사용
      (3) private IP(개인IP)는 외부 네트워크 환경에서 IP주소를 찾지 못함
      -> 공유기를 통해 나갈 때 Public IP 주소로 변환하여 나가야 함
      -> NAT (Network Address Translation) 이라 함
      (4) 공유기를 나가고 나서 목적지 서버(google)로 가기 위해 여러 router를 거쳐야 함
      -> 라우터 : 네트워크와 네트워크를 연결해주는 역할
      -> 라우팅 : 라우터를 통해 목적지를 찾아가는 것
      (5) 구글 서버가 연결된 라우터에 데이터가 도착을 하면 패킷에 기록된 구글 IP주소를 통해 MAC주소를 얻어야 함
      -> ARP 프로토콜 사용(브로트캐스트)
      (6) Internet Layer의 IP주소와 Network Access Layer의 MAC주소로 올바른 목적지(Google)에 도착 성공
      (7) Transport Layer : 목적지 포트번호 80번 확인 -> 80번에 전달 확인
      (8) Application Layer : HTTP Request 데이터를 얻을 수 있음
      (9) Google에서 응답
      (10) HTTP요청, 응답이 끝나면 연결을 해제해야 함(TCP 컨트롤비트 사용-FIN, ACK) -> 4-way-handshaking
      -> 서버 FIN 보내면 발생할 수 있는문제점 : 서버가 FIN을 보내기 전 보냈던 데이터가 FIN보다 늦게 도착할 경우
      -> 클라이언트가 FIN을 수신했다고 연결된 소켓을 닫아버리면, FIN을 보내기 전에 보낸 패킷은 클라이언트가 받을 수 없음
      -> 클라이언트는 서버로부터 FIN 요청을 받더라도 일정시간 동안 소켓을 닫지 않고 아직 도착하지 않은 잉여 패킷을 기다림(TIME_WAT 상태)

  • DNS

    • Application Layer 프로토콜, 53번 포트 사용
    • 도메인이 담긴 쿼리를 도메인 서버에 보내면 응답해줌
    • Transport Layer에서 UDP 프로토콜 사용 : 헤더에 포트번호만 있음
    • 비연결 지향형
  • TCP : 흐름/오류/혼잡제어를 통해 신뢰성있는 데이터 전송을 보장해줌

profile
비슷한 어려움을 겪는 누군가에게 도움이 되길

0개의 댓글

관련 채용 정보