Socket은
os가 제공하는 api 중 하나이며 프로세스 간의 통신을 위한 api이다. 여러가지 function을 갖고 있다
=> os 내부의 것만 사용 가능하다
=> os의 transport에는 TCP, UDP가 있다
=> 소켓은 두 종류가 있다
- TCP 소켓 ( SOCK_STREAM )
- UDP 소켓 ( SOCK_DGRAM )
bind는 서버의 특정포트를 bind한다
=> 클라이언트에서 bind를 쓰지 않는 이유는, 클라이언트는 특정 포트에 관계없이 아무거나 써도 되기 때문이다.
TCP 소켓
웹서버 진행 순서
1. 소켓 생성 socket()
- int socket(int domain, int type, int protocol)
- int type에 tcp/udp 입력
2. bind() 방금 생성한 소켓을 특정 포트에 바인드 한다
3. listen() 이 소켓은 listen 하는 형태로 사용하겠다
4. accept() 나는 클라이언트로부터 요청을 받을 준비가 되어있다 이제 들어와라
이때 서버는 클라이언트가 요청을 할때까지 blocks(가만히 있음) 형태가 됨 - blocks until connection from client
웹클라이언트(웹브라우저) 진행 순서
1) 소켓 생성
2) 바로 connect() -> 내가 원하는 서버의 프로세스에 접근하겠다
이 과정까지 끝나면 서버와 클라이언트 사이에 연결고리가 생성됨
이 이후로는 단순함 read()와 write()의 반복임
계속 이렇게 진행되다가 끝나면 close() 해서 연결 끊으면 됨
정리
서버에서 먼저 소켓 만듬(tcp 소켓)
bind로 특정 포트에 바인드 함
listen 용도로 지정
accept 상태가 됨
...
이 후에는 단순한 read&write
UDP 소켓
UDP 소켓은 훨씬 단순함, 소켓 생성하고 커넥션 개념 없이 바로 보내면 된다
'CS이론 > 네트워크' 카테고리의 다른 글
멀티미디어 네트워크 (0) | 2024.02.16 |
---|---|
[링크계층] Cellular Network (0) | 2024.02.13 |
[링크계층] 무선이동 네트워크 (0) | 2024.02.13 |
[전송계층 1] Multiplexing and Demultiplexing UDP 헤더필드 (0) | 2024.01.19 |
[네트워크] 컴퓨터네트워크 기본2 (0) | 2024.01.06 |