컴퓨터네트워크 기본2

ChoiYongHyeun·2023년 11월 17일
0

네트워크

목록 보기
2/10
post-thumbnail

강의 : http://www.kocw.net/home/cview.do?mty=p&kemId=1169634

강의 회고

  1. TCPUDP : 데이터를 전송하는 두 가지 방법

    • TCP : 신뢰성 있게 데이터 전송
    • UDP : 아몰랑 그냥 보내버려 근데 빨라
  2. packet

    • 현재 인터넷은 packet 기반의 데이터를 보낸다.
    • 사용자가 보내는 정보를 packet 이라는 집합으로 해서 보낸다.
    • packet은 데이터의 bit 의 집합
  3. packet delay

    • 라우터 에서 packet 을 알맞게 보내주기 때문에 라우터 를 공유하는 여러 사용자들이 보낼 수 있다.
    • 하지만 만약 여러 사용자가 있을 경우 발생 할 수 있는 문제들
      1. processing delay : 데이터 확인 및 아웃고잉 링크 확인
      1. queueing delay + packet loss : 데이터를 전송 전 대기하는 딜레이 (보내는 양보다 받는 양이 많을 경우 딜레이 발생, 큐 보다 많은 양이 많이 들어오면 데이터 소실)
      2. transmission delay : packetlink 를 통해서 온전히 보낼 때 생기는 딜레이
      3. propagation delay : 다음 router 까지 보내는동안 걸리는 딜레이

10개의 차들이 10개가 연결된 채로 쭉쭉 가야 한다고 가정했을 때

10개의 차가 모인 caravan 은 packet , 차들은 bit 라고 볼 수 있다.

첫 번째 톨 게이트를 들리면 차들은 톨게이트의 큐 안에 대기하고 10개의 차가 모두 모여 packet 형태가 되면 출발한다.

그러니 두 번째 톨게이트로 도착하는데 걸리는 시간은 1 시간 + 큐잉 딜레이 (120초) = 1시간2분


네트워크 계층

네트워크 계층은 애플리케이션 레이어 -> 트랜스포트 레이어 -> 네트워크 -> 데이터 링크 -> 피지컬 레이어로 이뤄져있다.

네트워크 계층은 계층 별로 프로토콜 이 존재하며 강의에선 굵직 굵직하게 볼 것이라고 한다.

예를 들어

  • 애플리케이션 레이어 : HTTP
  • 트랜스포트 레이어 : TCP / UDP
  • 네트워크 레이어 : IP
  • 데이터 링크 : Wifi , LTE .. etc

지피티한테 물어보자 ..

OSI 모델 (Open systems Interconnection)

  • 물리 계층 (Physical Layer) : 프레임(Frame) 단위의 데이터 전송을 담당하고, 물리 주소(MAC 주소)를 사용하여 특정 장치를 식별합니다.
    이더넷과 같은 스위치, 브리지, 네트워크 카드 등이 여기에 속합니다.

  • 네트워크 계층 (Network Layer): 패킷(Packet)을 이용하여 목적지까지의 경로를 선택하고 라우팅을 수행합니다. 라우터가 이 계층에서 동작하며, IP 주소를 사용하여 목적지를 식별합니다.

전송 계층 (Transport Layer): 데이터의 신뢰성을 보장하고, 흐름 제어 및 오류 복구를 담당합니다. 주로 TCP(Transmission Control Protocol) 또는 UDP(User Datagram Protocol)가 이 계층에서 동작합니다.

세션 계층 (Session Layer): 양 끝단 간의 대화와 데이터 교환을 관리합니다.
세션 설정, 유지, 종료 등의 작업을 수행합니다.

표현 계층 (Presentation Layer): 데이터의 표현 형식을 정의하고, 서로 다른 데이터 형식 간의 변환을 수행합니다. 암호화, 압축, 문자 인코딩 등이 여기에 속합니다.

응용 계층 (Application Layer): 최종 사용자가 네트워크에 접근할 수 있도록 서비스를 제공합니다. 프로토콜 스택의 최상위 계층으로, HTTP, SMTP, FTP 등 다양한 응용 프로그램이 이 계층에서 동작합니다.

네트워크 계층은 하위 계층의 기능이 상위 계층에게 기능을 제공한다.

네트워크 애플리케이션

애플리케이션들이 존재 할 때 compile 하는 순간 process 가 진행된다.

웹 브라우저의 경우 네트워크의 기능이 있는 process 라고 볼 수 있다.

웹 브라우저와 서버의 연결은

네트워크 기능이 있는 웹 프로세스와 네트워크 기능이 있는 서버의 프로세스 간 라우터로 중계되는 것이다.

현재 강의는 애플리케이션부터 탑 다운 방식으로 내려간다.

그러니 강의를 듣다가 깊은 내용이 나오더라도 그냥 그렇다 하고 받아들이자

클라이언트와 서버의 구조

서버

  • 항상 24시간 동작해야 하며, 불변하는 IP 주소를 가지고 있어야 한다.
    > IP 주소가 고정되어 있어야 클라이언트들이 항상 잘 찾아올거 아니야 ~ 
    클라이언트
  • IP 주소는 고정되어 있지 않아도 괜찮다.

IPC (Inter process Comunication)
운영 체제에서 실행 중인 여러 프로세스 간에 데이터를 교환하고, 상호작용 하는 메커니즘
네트워크 기능을 갖는 프로세스들간의 통신을 가능하게 하는 것을 소켓(Socket) 이라고 한다.
그러니까 소켓은 프로세스 간 통신을 위한 인터페이스

소켓 (Sockets)

다른 컴퓨터와 연결하기 위해선 다른 컴퓨터의 소켓 의 주소를 알아야 한다.

이 때 소켓 의 주소는 IP address + port number 이다.

  • IP address : 컴퓨터 상의 위치
  • port number : 운영중인 프로레스의 숫자

그니까 한 노트북에 여러 프로세스가 돌아가고 있을 텐데 웹 브라우저 소켓 의 주소는
현재 컴퓨터 상의 위치 + 프로세스의 숫자로 만들어진다.

그러면 구글 크롬을 쓸 때와 인터넷 익스플로러를 쓸 때는 소켓 주소가 달라 ?

웹 브라우저 자체는 일반적으로 하나의 프로세스로 동작하기 때문에 같은 주소를 다른 애플리케이션으로 연다고 할 지언정, 해당 주소의 웹 브라우저의 포트번호는 같기 때문에 어떤 애플리케이션이냐는 영향을 미치지 않는다.

따라서 같은 도메인 주소를 사용하는 경우에는 일반적으로 브라우저에서 사용되는 포트번호가 같으며, 소켓 주소도 같다 .

www.naver.com 이라고 해서 들어가는 것은 사실 nvaer 의 ip 주소 + 포트 번호 (HTTP 인 경우엔 80 , HTTPS 인 경우엔 443) 과 같다.

www.naver.com 은 네이버의 IP 주소의 DNS(Domain name system) 이다.

대부분 웹브라우저들이 80번 포트를 사용하고 있다. 왜 공통된 포트 주소를 쓸까 ?

서버는 24시간 켜져있어야 하며 주소가 일정해야 한다. (IP 주소 뿐이 아니라 포트 숫자까지)
DNS는 단순히 문자열IP address 로 변경해줄 뿐이지 포트 주소는 알려주지 않는다.
그러니 대부분 웹 브라우저들이 포트를 공통되게 사용한다. 안그러면 DNS 에서 포트 주소까지 만들어야 하니까 !

애플리케이션의 전송의 희망 사항 ?

  1. 데이터의 무결성이 유지되었으면 좋겠다.
  2. 적절한 시간 내에 전송이 되었으면 좋겠다.
  3. 데이터가 전송 되었을 때 이정도 용량으로는 전송 되었으면 좋겠다. (1초에 어느정도의 양이 전달되었으면 좋겠다.)
  4. 내 데이터가 다른 사람들에게 보이지 않고 전송 되었으면 좋겠다.

...

등등 많은 요구 사항이 있는데 그 중 현재의 애플리케이션 네트워크가 보장하는 것은
data integrity(데이터 무결성) 이다.

data integrityTCP 를 이용하여 보장한다.

유명한 애플리케이션들은 어떤 트랜스포트 프로토콜을 사용하는지

이 중에서 가장 유명한 애플리케이션은 web 을 전송 시키는 HTTP 에 대해서 공부해보자

HTTP (Hypter Text Transport Protocol)

Hyper Text : Text 인데 중간 중간에 링크가 존재하는 텍스트

클라이언트가 서버에 접속하려고 할 때

클라이언트는 HTTP request 를 서버에 보내고 서버는 클라이언트에게 HTTP response 를 보낸다.

request , response 가 있기 전에 일반적으로 transpose 하는 것이기 때문에
transpose layer 의 기능을 사용 할 것이고 그 중 일반적으로 TCP 를 사용 할 것이다.

서버와 클라이언트가 서로 요청을 보내고 받기 위해서는 TCP connection 이 우선적으로 일어나야 한다.

HTTP is stateless : HTTP 는 정말 단순해서 request 에 대한 response 만 보낼 뿐 기억하거나 그러지 않는다. 상대방에 대한 상태를 기억하지 않는다.

정리 : HTTP 는 TCP connection 을 사용해서 requset , response 를 통해 소통한다.

Non persistent HTTP vs persistent HTTP

request , response 를 받기 위해선 TCP connection 을 먼저 진행해야 한다고 했다.

이 때 TCP connection 을 한 후에 연결을 끊으면 non persistent , 연결을 끊으면 persistent

예를 들어 네이버 메인페이지 안에는 다양한 그림 파일이나 다른 하이퍼링크들이 있을 것이다.
우리가 네이버에 접속 할 때 클라이언트와 네이버의 서버는 TCP connection 을 연결 한 후에 메인 페이지를 가져올 것이다.
이 때 Non persistent 는 메인 페이지를 가져온 다음에 TCP connection 해제 , 다시 연결 후 다른 그림 파일에 대한 HTTP 가져오고 , 끊고 다시 연결하고 .. 반복
PersistentTCP connection 을 유지한 채로 다른 HTTP protocol 을 수행한다.

profile
빨리 가는 유일한 방법은 제대로 가는 것이다

0개의 댓글