※kocw에서 제공하는 이석복 교수님의 컴퓨터네트워크 수업을 듣고 필기한 내용입니다.
출처를 따로 밝히지 않는 한 전부 해당 수업에서 제공한 자료들이며 제가 작성한 부분에 있어 틀린 부분이 있을 수도 있다는 점 양해바랍니다.
1. Computer Network and Internet
1) 인터넷의 구성 요소
1. 엣지 - 서버, 클라이언트
2. 코어 - 라우터
2) 인터넷의 기본 전송 단위
- 패킷
- 인터넷은 데이터를 패킷으로 쪼개서 전송하기 때문에 한꺼번에 여러명의 사용자를 관리할 수 있음
- 하지만 라우터가 담을 수 있는 크기를 초과해서 패킷이 들어올 경우 유실이 발생함
- 이렇게 발생하는 유실이 네트워크 전체 유실의 대부분을 차지
3) 데이터 전송때 걸리는 시간
1. 프로세싱 딜레이 - 헤더를 읽고 경로 지정, 패킷 에러 체크하는 등의 프로세싱에 걸리는 시간
2. 큐잉 딜레이 - 라우터 안에 이미 다른 패킷이 있을 경우 자기 차례를 기다리는데 걸리는 시간
3. 트랜스미션 딜레이 - 패킷이 온전히 라우터에서 뿜어져 나오는데 걸리는 시간
4. 프로퍼게이션 딜레이 - 다음 라우터까지 가는데 걸리는 시간(빛의 속도)
2. Application layer
HTTP protocol
- 서버와 클라이언트 사이에 request와 response로 메세지가 이루어짐
- 서버는 단순히 요청된 파일을 전달한 뿐이기 때문에 기억창고를 가지고 있지 않음, stateless 하다고 함
- 전송계층의 tcp 프로토콜을 사용하기 때문에 reliable한 데이터 전송이 가능함
non-persistent HTTP: 매 request마다 새로운 TCP 커넥션 연결
persistent HTTP: 한번 연결한 TCP 커넥션을 재사용(default)
3. Transport layer
1) UDP protocol
- 전송계층이 제공하는 가장 기본적인 기능만 수행(목적지 까지 전달, 에러체크)
- DNS, SNMP 프로토콜이 UDP를 사용
2) reliable data tranfer
- 전송계층 이하에서 발생하는 패킷 에러, 유실을 방지하기 위함
- 패킷 에러를 위한 메카니즘
1. Error detection: checksum 으로 에러체크
2. Feedback: ACK로 받은 패킷에 대한 피드백을 줌
3. retransmission: 패킷 에러가 발생했을 경우 재전송
4. sequence number: 새로운 패킷과 재전송된 패킷을 구분하기 위한 시퀀스 넘버
- 패킷 유실을 위한 메카니즘
1. 타이머: 타임 아웃 될때까지 피드백이 안올경우 유실로 판단
3) Pipelined protocol
- 데이터 전송 속도를 위해 한꺼번에 여러개의 패킷 전송
- Go-Back-N 방식:
장점: 단순함, 리시버 버퍼가 필요 없음, 단 하나의 타이머만 필요
단점: 에러 혹은 유실 발생 시 윈도우 전체를 다시 보내야 하기 때문에 네트워크에 과부화를 줄수있음
- Selective repeat 방식:
장점: 에러 혹은 유실 발생 시 해당 패킷만 재전송하기 때문에 네트워크에 과부화를 줄일 수 있음
단점: 리시버 버퍼가 필요함, 센더 윈도우안의 모든 패킷마다 타이머를 가지고 있게 해야됨
4) TCP protocol
- point-to-point: 1대1 연결
- reliable data tranfer
- pipelined
- send & receive buffers: 양쪽에 각각 센더, 리시버 버퍼 필요
- full duplex data: 양뱡향 통신
- connection-oriented: handshaking으로 연결 관리
- flow controlled: 흐름제어
- 그 밖의 특징들:
1. tcp 헤더에는 모든 중요한 내용들이 함축적으로 담겨있음
2. cumulative ACK: ACK가 유실되더라도 가장 최근에 받은 ACK만 보고 판단하면 됨
3. 타임아웃 혹은 중복된 ACK를 3개 더 받으면 유실이라고 판단
'[CS] > [컴퓨터네트워크]' 카테고리의 다른 글
네트워크계층 - DHCP, IP fragment (0) | 2021.06.13 |
---|---|
네트워크계층 - IP 프로토콜 (0) | 2021.06.13 |
전송계층3 - TCP Protocol (0) | 2021.03.11 |
전송계층2 - Reliable한 데이터 전송을 위한 기능들 (0) | 2021.03.01 |
전송계층1 - 전송계층이 제공하는 2가지 기본 기능(Multiplexing and Demultiplexing, 에러체크) (0) | 2021.02.28 |