강의 : http://www.kocw.net/home/cview.do?mty=p&kemId=1169634
TCP
와 UDP
: 데이터를 전송하는 두 가지 방법
TCP
: 신뢰성 있게 데이터 전송UDP
: 아몰랑 그냥 보내버려 근데 빨라 packet
packet
기반의 데이터를 보낸다.packet
이라는 집합으로 해서 보낸다.packet
은 데이터의 bit
의 집합packet delay
라우터
에서 packet
을 알맞게 보내주기 때문에 라우터
를 공유하는 여러 사용자들이 보낼 수 있다.processing delay
: 데이터 확인 및 아웃고잉 링크 확인queueing delay
+ packet loss
: 데이터를 전송 전 대기하는 딜레이 (보내는 양보다 받는 양이 많을 경우 딜레이 발생, 큐 보다 많은 양이 많이 들어오면 데이터 소실)transmission delay
: packet
을 link
를 통해서 온전히 보낼 때 생기는 딜레이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
라고 볼 수 있다.
웹 브라우저와 서버의 연결은
네트워크 기능이 있는 웹 프로세스와 네트워크 기능이 있는 서버의 프로세스 간 라우터로 중계되는 것이다.
현재 강의는 애플리케이션부터 탑 다운 방식으로 내려간다.
그러니 강의를 듣다가 깊은 내용이 나오더라도 그냥 그렇다 하고 받아들이자
서버
> IP 주소가 고정되어 있어야 클라이언트들이 항상 잘 찾아올거 아니야 ~
클라이언트
IPC (Inter process Comunication)
운영 체제에서 실행 중인 여러 프로세스 간에 데이터를 교환하고, 상호작용 하는 메커니즘
네트워크 기능을 갖는 프로세스들간의 통신을 가능하게 하는 것을소켓(Socket)
이라고 한다.
그러니까소켓
은 프로세스 간 통신을 위한인터페이스
다른 컴퓨터와 연결하기 위해선 다른 컴퓨터의 소켓
의 주소를 알아야 한다.
이 때 소켓
의 주소는 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 에서 포트 주소까지 만들어야 하니까 !
...
등등 많은 요구 사항이 있는데 그 중 현재의 애플리케이션 네트워크가 보장하는 것은
data integrity(데이터 무결성)
이다.
data integrity
는 TCP
를 이용하여 보장한다.
이 중에서 가장 유명한 애플리케이션은 web
을 전송 시키는 HTTP
에 대해서 공부해보자
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
를 통해 소통한다.
request
, response
를 받기 위해선 TCP connection
을 먼저 진행해야 한다고 했다.
이 때 TCP connection
을 한 후에 연결을 끊으면 non persistent
, 연결을 끊으면 persistent
예를 들어 네이버 메인페이지 안에는 다양한 그림 파일이나 다른 하이퍼링크들이 있을 것이다.
우리가 네이버에 접속 할 때 클라이언트와 네이버의 서버는TCP connection
을 연결 한 후에 메인 페이지를 가져올 것이다.
이 때Non persistent
는 메인 페이지를 가져온 다음에TCP connection
해제 , 다시 연결 후 다른 그림 파일에 대한 HTTP 가져오고 , 끊고 다시 연결하고 .. 반복
Persistent
는TCP connection
을 유지한 채로 다른HTTP protocol
을 수행한다.