본문 바로가기
Learning-log -CS/Network

(컴퓨터와 네트워크) 네트워크 계층, 애플리케이션 계층(Application Layer)

by why제곱 2024. 1. 21.

본 게시물은 이석복 교수님의 네트워크 강의를 수강하며 작성한 강의노트와 추가로 공부한 내용을 바탕으로 작성하였습니다.

  • 참고 강의 및 사이트

KOCW

 

KOCW

한양대학교 이석복 강의 내용 및 목표 인터넷을 동작시키는 컴퓨터네트워크 프로토폴을 학습한다. 주제분야 공학 >컴퓨터ㆍ통신 >컴퓨터공학 강의학기 2015년 2학기 수강 확인증 발급 안내 수강

www.kocw.net

[네트워크] TCP/IP 흐름 제어 & 혼잡 제어

 

[네트워크] TCP/IP 흐름 제어 & 혼잡 제어

cs-study에서 스터디를 진행하고 있습니다. 흐름 제어 수신 측이 송신 측보다 데이터 처리 속도가 빠르면 문제가 없지만, 송신 측의 속도가 빠를 경우 문제가 생긴다. 수신 측에서 제한된 저장 용

steady-coding.tistory.com


 

네트워크 계층

위에서부터 내려가면서 다룰 예정이다.

Layer라는건 개념적으로 나눈 것이며 이 계층 안에 존재하는 다양한 프로토콜이 있으며 이 중 중요한 프로토콜들을 다룰 것이다. 계층이란, 하위 계층에서 상위 계층에게 어떤 기능을 제공하여 하위계층의 서비스를 상위 계층이 이용할 수 있도록 하는 것이다. 

이미지 출처 : https://raonctf.com/essential/study/web/layer

  • Application : HTTP
  • Transport : TCP/UDP
  • Network : IP
  • Link : WiFi, LTE/3G, 이더넷
  • Physical

 

Client-Server Architecture

  • Server
    • 항상 동작해야함
    • 바뀌지 않고 고정된 IP 주소를 가져야 함
  • Clients
    • 서버와 통신
    • 다양한 IP 주소 가져도 됨

 

Processes communicating

  • 결국 client Process 와 server Process 사이의 통신이다.
  • Process 사이의 통신에서 OS가 인터페이스를 만들어 놓으며 다른 컴퓨터 사이의 통신을 하기 위한 인터페이스도 만들어 놓았으며 이를 socket이라 한다.

 

Sockets

  • 연결하고 싶은 상대 프로세스 소켓의 주소를 알아야 한다.
  • 주소의 역할을 하는 인덱싱이 IP Address와 Port번호의 결합이다.
  • 웹브라우저에서 주소를 입력할 때는 ip주소와 port번호가 아닌 편의성을 위해 domain주소를 입력한다. DNS 시스템에 의해 내부 IP주소로 변환되며 포트번호 80번을 입력 안하면 기본으로 80번으로 연결된다.
  • 웹 서버를 운영하는 거의 대부분의 서버들이 포트를 80번으로 쓰고 있다. 왜 그럴까?
    • 서버는 24시간 켜져 있어야 하며 고유 주소가 일정해야 한다.
    • 포트넘버까지 필요한데 다 다르면 너무 복잡해지므로 포트번호는 일치시킨 것이다.

 

 

Application계층이 Transport 계층에게 필요로 하는 것

  • data integrity : 데이터가 유실되지 않고 온전하게 목적지까지 도착
  • timing : 일정 시간 내에 목적지에 도착
  • throughput : 용량
  • security

⇒ 이 중 Transport Layer가 제공하는 서비스는 data integrity 뿐

 

 

Web and HTTP

  • HTTP : Hypertext Transfer Protocol
  • Hypertext : 텍스트들 사이에 다른 텍스트를 가리키는 링크가 존재하는 텍스트
  • 이런 Hypertext를 전송하는 프로토콜
  • client : 서버에게 HTTP 프로토콜을 이용해 원하는 Hypertext 요청
  • server : 클라이언트 요청에 HTTP 프로토콜로 응답
  • TCP 사용
    • HTTP request, response 이전에 TCP Connection을 해줘야 함
  • stateless
    • 요청 들어오면 수행 후, 더이상 통신한 상대에 대해 기억하지 않음
  • Connections
    • non-persistent HTTP : TCP Connection을 끊는 경우
      • 10개의 jpeg 파일을 받을 때 각 파일마다 Connection 연결을 매번 해야 함.
    • persistent HTTP : TCP Connection을 유지하는 경우
      • 현재 웹 브라우저에서 기본으로 사용하는 방식

 

Socket

  • 프로세스들 간의 통신에 이용되는 인터페이스
  • TCP/UDP 중 어느 것을 사용하냐에 따라 각각에 맞는 Socket을 만들어 통신 ⇒ Socket의 종류가 2가지!
  • Socket Type
    • SOCK_STREAM
      • TCP
    • SOCK_DGRAM
      • UDP
    • Socket Functions(TCP case)
      • 관계를 맺은 이후부터는 그냥 read & write 로서, 기존에 알던 통신의 연속

 

Socket API

  • Socket Creation and Setup
    • Create a socket
      • Function : socket (제일 처음 불려서 소켓을 만드는 함수)
        • int socket (int domain, int type, int protocol);
    • Bind a socket to a local IP address and port number
      • Function : bind (방금 생성한 소켓의 아이디를 사용해 이 소켓을 특정 address에 bind하는 함수)
        • int bind ( int sockfd, struct sockaddr* myaddr, int addrlen);
    • Listen
      • Function : listen(방금 생성한 소켓을 리슨 용도로 사용할 것이며, 여러 request가 들어오면 최대 몇 개까지 queue에 넣어놓을 것인가를 정하는 함수)
    • accept
      • 준비동작이 끝났으므로 클라이언트로부터 연결을 기다리겠다
      • 클라이언트로부터 요청이 들어오면 그 때 return이 됨. return이 될 때 두번째 변수에 클라이언트의 주소가 저장되며 서버도 클라이언트의 주소를 알게 됨.
    • client에는 왜 bind를 쓰지 않을까? client는 특정 port를 bind할 필요가 없으며 남는 port를 사용해도 됨. 특정 port를 지정하고 싶다면 사용해도 무관
  • Sending and Receiving Data
  • Tearing Down a Connection (TCP)
    • Function : close